【发布时间】:2014-11-12 22:51:43
【问题描述】:
我最近在c++中遇到了这个问题
std::cout << -5.0000004768371582 + 5 << "\n";
这将打印 -4.76837e-007 即使您认为它会打印类似 0.000000476... 我知道浮点并不总是正确的,但我以前从未见过。 我也看到其他数字也会发生这种情况。
这是为什么。我该如何解决?
【问题讨论】:
标签: c++ floating-point precision
我最近在c++中遇到了这个问题
std::cout << -5.0000004768371582 + 5 << "\n";
这将打印 -4.76837e-007 即使您认为它会打印类似 0.000000476... 我知道浮点并不总是正确的,但我以前从未见过。 我也看到其他数字也会发生这种情况。
这是为什么。我该如何解决?
【问题讨论】:
标签: c++ floating-point precision
您遇到的输出称为scientific notation。如果您希望它以定点表示法显示,请使用std::fixed。
#include <iostream>
#include <iomanip>
int main()
{
std::cout << std::fixed << std::setprecision(10) << -5.0000004768371582 + 5 << "\n";
}
【讨论】: