计算机如何将浮点数转换为十进制字符串?

zzh1996

当我运行以下代码时,输​​出准确地是十进制数2 500

(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 10divided by 10可以在浮点数造成精度损失。进行转换时使用什么算法?

帕斯卡·库克(Pascal Cuoq)

是的,对于2 500存在精确的双精度浮点表示形式但是,您不应假定会pow(2.0,500.0)产生此值。无法保证函数的准确性,尽管数学结果也可以很好地表示出来,但pow您可能会发现由于不产生而产生的SO问题pow(10.0, 2.0)100.0

但是无论如何,要回答您的问题,从浮点二进制表示形式到十进制的转换通常并不依赖于浮点运算,对于最终结果的预期精度而言,这确实是不准确的。通常,准确的转换需要依赖大整数算法例如,在2 500的情况下,朴素的算法将是将二进制写入的大整数重复除以1000…<500 zeroes in total>…10。

在某些情况下,可以使用浮点算术,例如,利用IEEE 754双精度精确表示10到10 23的幂这一事实但是,在二进制浮点和十进制浮点之间正确舍入的转换通常总需要大整数运算,并且在远离1.0的情况下尤其明显。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在monotouch中,如何将字符串转换为十进制/浮点数?

数据框将浮点数转换为全十进制字符串

Python如何将浮点数十六进制转换为十进制

将带十进制的浮点数转换为不带十进制的字符串 Python 3.7

将列中的字符串十进制数转换为 Pandas DataFrame 中的浮点数

如何将浮点数转换为十进制整数乘以2的幂?

将浮点数转换为十进制数

如何将 SEQ 中的整个 ROW 从十进制数转换为浮点数,然后再返回?

如何使用脚本将时间转换为Google表格中的十进制浮点数?

如何将浮点数很好地格式化为字符串而没有不必要的十进制0

如何将字符串转换为浮点数?(温度转换器)

如何将二进制字符串转换为十进制?

如何将二进制字符串值转换为十进制

如何将很大的十进制字符串转换为十六进制?

如何将十六进制字符串转换为十进制值

ValueError: 无法将字符串转换为浮点数---如何将字符串列表的列表转换为 numpy 数组类型浮点数?

如何将字符串的 ndarray 列表转换为浮点数

如何将字符串转换为浮点数?

熊猫如何将所有字符串值转换为浮点数

如何将字符串数组转换为numpy中的浮点数组?

如何将字符串转换为浮点数

如何将逗号作为字符串的数字转换为Javascript中的浮点数

Ruby:如何将日期时间字符串转换为纪元时间的浮点数?

如何将数字的英语字符串转换为浮点数(例如,“ 26” => 26.0)

如何将浮点数转换为字符串?

如何将浮点数组转换为单字节字符串?

如何将字符串转换为数字范围(浮点数)?

如何将列表字符串转换为浮点数

如何将包含“/”的字符串转换为 Python 中的浮点数