我的浮动操作有问题
something wrong with my float operation
>我一定错过了什么,这有什么问题?
float controlFrameRate = 1/60;
它应该分配类似 0.0166666667 的东西,但它的出现是 0.00000 等。 视觉工作室只是在骗我吗?
那是因为1/60
是一个整数,它是0,因为整数除法。这用于初始化浮点数,从而得到0.
您可以通过首先使 RHS 表达式成为浮点数来修复它:
float controlFrameRate = 1.0f/60;
之
float controlFrameRate = 1/60.0f;
在C++中,文字如1
、42
等是int
、1.0
、3.1416
是double
的,1.0f
中的f
使文字成为float
。请注意,在上面的示例中可以省略f
。但是,如果双精度值的值超出浮点数的范围,则为浮点数分配双精度值可能会出现问题。
一个整数除以另一个整数将产生一个整数,并且是截断操作。您将获得小于或等于实际值的值。
至少创建一个常量浮点来修复它:
float controlFrameRate = 1.0 / 60;
float controlFrameRate = 1 / 60.0;
float controlFrameRate = 1.0 / 60.0;
do
float controlFrameRate = 1.f/60;
或
float controlFrameRate = 1/60.f;
或
float controlFrameRate = 0.1f/6;
;-)
你应该
使用1/60.0
。 否则你不会得到float
结果。
相关文章:
- 我似乎对if/else的基本语句有问题:/
- 我在范围内未声明的错误类有问题
- 我的C++语言蛮力算法有问题
- 我关于函数"Assert"的C++代码有问题
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- C++类中的友元函数有问题?
- 我对数组即 0x6dfe78 有问题
- 我对 std::unique(算法)C++有问题
- 使用 fstream 库并在屏幕上打印的文件有问题?
- 这个模板为什么有问题?如何正确编译
- 我对 MyGraph 属性顶点名称和边权重有问题
- delete[]有问题,如何部分删除内存
- 在C++中使用exit()退出程序有问题吗
- 跳转到if(false)块有问题吗
- 查找有问题的宏
- 使用 rand() 和 srand() 有问题
- C++ 回文程序总是给出 0(假)作为输出问题;我的代码哪里有问题?
- 我在 C++ "out_of_range at memory location"有问题
- 基本字符串操作有问题 [c++, Visual Studio 2013]
- 我的浮动操作有问题