我的浮动操作有问题

时间:2012-06-03 16:36:53

标签: c++ operators

我一定错过了什么,这有什么不对吗?

float controlFrameRate = 1/60;

它应该分配像0.0166666667这样的东西,但它的0.00000等是视觉工作室只是骗我?

4 个答案:

答案 0 :(得分:7)

这是因为1/60是一个整数,因为整数除法被截断,所以它是0。这用于初始化float,给出0.你可以通过使RHS表达式首先浮动来修复它:

float controlFrameRate = 1.0f/60;

float controlFrameRate = 1/60.0f;

在C ++中,142等文字是int1.03.1416double,{ 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结果。