以下语句是否适用于除double
之外的任何NaN
(Java原语双精度IEEE-754):
Double.parseDouble(String.valueOf(d)) == d
另外说,解析一个序列化的(使用String.valueOf())double值总是会得到确切的原始double吗?
答案 0 :(得分:3)
除了NaN之外,正如你所说,是的,那个不变量应该成立。如果没有,那就是JDK错误。
Double.toString
在Javadoc中说这个:
m或a的小数部分必须打印多少位数?必须至少有一个数字来表示小数部分,并且除此之外必须有多个,但只有多少,更多的数字才能唯一地将参数值与double类型的相邻值区分开来。也就是说,假设x是由该方法为有限非零参数d生成的十进制表示所表示的精确数学值。那么d必须是最接近x的double值;或者如果两个double值同样接近x,那么d必须是其中之一,d的有效位的最低有效位必须为0.
总结一下,它返回足够的数字来识别这个双唯一,因此Double.parseDouble
应该返回与转换为字符串完全相同的双精度。