我一定是错过了什么,这是怎么回事?
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
are 3.1416
,double
而f
in1.0f
使字面量为 a float
。请注意,在f
上面的示例中可能已经省略了。但是,如果双精度值超出浮点数范围,则将双精度值分配给浮点数可能会出现问题。
一个整数除以另一个整数产生一个整数,并且是一种截断操作。您将获得小于或等于实际值的值。
使至少一个常量浮点来修复它:
float controlFrameRate = 1.0 / 60;
float controlFrameRate = 1 / 60.0;
float controlFrameRate = 1.0 / 60.0;
做
float controlFrameRate = 1.f/60;
或者
float controlFrameRate = 1/60.f;
或者
float controlFrameRate = 0.1f/6;
;-)
你应该使用1/60.0
. 否则你不会得到float
结果。