c ++返回7.45058而不是0

时间:2015-05-12 12:07:03

标签: c++

我遇到了另一个异常现象:

float T = 19.0 / 99.0;
float moo = (99.0 * T) - 19.0;

如预期的那样,T = 0.191919,然而' moo'意味着是0而是7.450586。 我只能假设在某个地方再次需要某种形式的铸造。

2 个答案:

答案 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。