C ++浮点数是远离的

时间:2014-11-12 22:51:44

标签: c++ floating-point precision

我刚刚在c ++中遇到过这个问题

std::cout << -5.0000004768371582 + 5 << "\n";

这将打印-4.76837e-007,即使你认为它会打印像0.000000476 ... 我知道浮点数并不总是正确的,但我以前从未见过它。 我也看到过这个与其他数字有关。

为什么会这样。我怎么能解决它?

2 个答案:

答案 0 :(得分:9)

数字是正确的,浮点确实有一些准确性问题,但在这种情况下并非如此。

在这种情况下,这只是一个符号问题。

-4.76837e-007表示

所以这是正确的

答案 1 :(得分:5)

您遇到的输出称为scientific notation。如果您希望以固定点表示法显示,请使用std::fixed

#include <iostream>
#include <iomanip>

int main()
{
    std::cout << std::fixed << std::setprecision(10) << -5.0000004768371582 + 5 << "\n";
}