我遇到了另一个异常现象:
float T = 19.0 / 99.0;
float moo = (99.0 * T) - 19.0;
如预期的那样,T = 0.191919,然而' moo'意味着是0而是7.450586。 我只能假设在某个地方再次需要某种形式的铸造。
答案 0 :(得分:0)
将您的代码更改为此,您将在moo上获得0
浮动T = 19.0 f / 99.0 f ; float moo =(99.0 f * T) - 19.0 f ;
没有这个的moo值也不是7.45,它是7.45058e-08几乎为零。
答案 1 :(得分:0)
由于任何浮点数都用c ++中的2的补码表示法表示。在操作浮点值时,通常会得到近似值。所以7.450586e-008就是准确的行为。如果你需要更多精度,请使用double。