gpt4 book ai didi

string - 浮点到字符串的无损转换并返回 : is it possible?

转载 作者:行者123 更新时间:2023-12-05 00:01:46 29 4
gpt4 key购买 nike

这个问题是指 C/x86 上使用的 IEEE 标准浮点数。

是否可以将任何数字(即不包括 NaN 之类的特殊值)浮点数或 double 数表示为十进制字符串,以便将该字符串转换回浮点数/ double 数将始终准确地产生原始数字?

如果不是,什么算法会告诉我给定的数字是否会出现转换错误?

如果是这样,请考虑这一点:一些十进制小数在转换为二进制时,在数值上将与原始十进制值不同,但反之则不然(因为二进制具有有限精度,因此任何十进制扩展都是有限且完美的,如果不是)截断),所以这是另一个问题......

是否有必要在十进制表示中引入故意的错误以欺骗 atof (或其他)函数产生精确的原始数字,或者是一个天真的,非截断 toString功能是否足够(假设通常可以进行精确转换)?

最佳答案

根据 this page :

Actually, the IEEE754-1985 standard says that 17 decimal digits is enough in all cases. However, it seems that the standard is a little vague on whether conforming implementations must guarantee lossless conversion when 17 digits are used.



所以存储一个 double作为具有至少 17 位数字(正确四舍五入)的十进制字符串将保证它可以转换回二进制 double没有任何数据丢失。

换句话说,如果每个可能的 double 值都被转换为 17 位的十进制字符串(正确四舍五入),它们都将映射到不同的值。因此没有数据丢失。

不过,我不确定单精度的最小截止值。但我怀疑它将是 8 或 9 位数字。

关于string - 浮点到字符串的无损转换并返回 : is it possible?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8990454/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com