【发布时间】:2012-02-17 21:55:23
【问题描述】:
这个问题是指 C/x86 上使用的 IEEE 标准浮点数。
是否可以将任何数字(即不包括 NaN 等特殊值)浮点数或双精度数表示为十进制字符串,以便将该字符串转换回浮点数/双精度数将始终准确地产生原始数字?
如果不是,什么算法告诉我给定的数字是否会发生转换错误?
如果是这样,请考虑:某些小数在转换为二进制时,在数值上与原始十进制值不同,但反之则不正确(因为二进制具有有限精度,因此任何十进制扩展都是有限的,并且如果不被截断就完美了),所以这是另一个问题......
是否有必要在十进制表示中引入故意错误以欺骗atof(或其他)函数以产生确切的原始数字,或者一个天真的、非截断toString函数是否足够(假设通常可以进行精确转换)?
【问题讨论】:
-
什么语言/环境?从您提到的符号来看,它可能是 JavaScript,也可能是 C,或者完全是其他东西。 (本地的
toString几乎肯定不对于真正的无损往返来说是足够的。)
标签: string floating-point floating-accuracy