C++浮点数是远离的

-4 c++ floating-point precision

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

std::cout << -5.0000004768371582 + 5 << "\n";
Run Code Online (Sandbox Code Playgroud)

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

为什么是这样.我怎么能解决它?

Ale*_*dar 9

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

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

-4.76837e-007表示

所以这是正确的


小智 5

您遇到的输出称为科学记数法.如果希望以固定点表示法显示,则使用std::fixed.

#include <iostream>
#include <iomanip>

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