Double.parseDouble()和String.valueOf()的精度

时间:2012-06-28 17:29:22

标签: java parsing double-precision

以下语句是否适用于除double之外的任何NaN(Java原语双精度IEEE-754):

Double.parseDouble(String.valueOf(d)) == d

另外说,解析一个序列化的(使用String.valueOf())double值总是会得到确切的原始double吗?

1 个答案:

答案 0 :(得分:3)

除了NaN之外,正如你所说,是的,那个不变量应该成立。如果没有,那就是JDK错误。

Double.toString在Javadoc中说这个:

  

m或a的小数部分必须打印多少位数?必须至少有一个数字来表示小数部分,并且除此之外必须有多个,但只有多少,更多的数字才能唯一地将参数值与double类型的相邻值区分开来。也就是说,假设x是由该方法为有限非零参数d生成的十进制表示所表示的精确数学值。那么d必须是最接近x的double值;或者如果两个double值同样接近x,那么d必须是其中之一,d的有效位的最低有效位必须为0.

总结一下,它返回足够的数字来识别这个双唯一,因此Double.parseDouble应该返回与转换为字符串完全相同的双精度。