我一定错过了什么,这有什么不对吗?
float controlFrameRate = 1/60;
它应该分配像0.0166666667这样的东西,但它的0.00000等是视觉工作室只是骗我?
答案 0 :(得分:7)
这是因为1/60
是一个整数,因为整数除法被截断,所以它是0。这用于初始化float,给出0.
你可以通过使RHS表达式首先浮动来修复它:
float controlFrameRate = 1.0f/60;
的
float controlFrameRate = 1/60.0f;
在C ++中,1
,42
等文字是int
,1.0
,3.1416
是double
,{ f
中的{1}}使文字成为1.0f
。请注意,上面的示例中可能省略了float
。但是,如果double的值超出float的范围,则为float指定double可能会有问题。
答案 1 :(得分:3)
整数除以另一个整数产生整数,并且是截断操作。您将获得小于或等于实际值的值。
至少使用一个常量浮点来修复它:
float controlFrameRate = 1.0 / 60;
float controlFrameRate = 1 / 60.0;
float controlFrameRate = 1.0 / 60.0;
答案 2 :(得分:2)
做
float controlFrameRate = 1.f/60;
或
float controlFrameRate = 1/60.f;
或
float controlFrameRate = 0.1f/6;
- )
答案 3 :(得分:0)
您应该使用1/60.0
。否则你不会得到float
结果。