【发布时间】:2016-11-21 00:13:58
【问题描述】:
当我运行以下代码时,输出准确为十进制数字 2500。
(ubuntu 上的 g++ 5.3.1)
#include<iostream>
#include<cmath>
using namespace std;
int main(){
cout.precision(0);
cout << fixed << pow(2.0,500.0);
return 0;
}
我想知道 C++ 是如何以如此高的精度将此浮点数转换为十进制字符串的。
我知道 2500 可以准确地以 IEEE 754 格式表示。但我认为mod 10 和divided by 10 会导致浮点数的精度损失。转换进行时使用什么算法?
【问题讨论】:
-
仔细,我建议你看看开源实现。这个博客也可能让你对这类问题有所了解:exploringbinary.com
标签: c++ math floating-point precision