我的浮动操作有问题

something wrong with my float operation

本文关键字:有问题 操作 我的      更新时间:2023-10-16

>我一定错过了什么,这有什么问题?

float controlFrameRate = 1/60;

它应该分配类似 0.0166666667 的东西,但它的出现是 0.00000 等。 视觉工作室只是在骗我吗?

那是因为1/60是一个整数,它是0,因为整数除法。这用于初始化浮点数,从而得到0. 您可以通过首先使 RHS 表达式成为浮点数来修复它:

float controlFrameRate = 1.0f/60;

float controlFrameRate = 1/60.0f;

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