【问题标题】:C++ floating point number is way off [duplicate]C ++浮点数很遥远[重复]
【发布时间】:2014-11-12 22:51:43
【问题描述】:

我最近在c++中遇到了这个问题

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

这将打印 -4.76837e-007 即使您认为它会打印类似 0.000000476... 我知道浮点并不总是正确的,但我以前从未见过。 我也看到其他数字也会发生这种情况。

这是为什么。我该如何解决?

【问题讨论】:

    标签: c++ floating-point precision


    【解决方案1】:

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

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

    -4.76837e-007 表示

    原来如此

    【讨论】:

    • 啊,我明白了。谢谢你的回答。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-05-11
      • 2012-10-27
      • 2013-09-13
      • 2015-02-17
      • 2014-11-14
      • 2011-02-09
      • 2013-05-11
      • 1970-01-01
      • 2012-01-20
      相关资源
      最近更新 更多