以下语句是否适用于除NaN之外的任何double (Java基本双精度IEEE-754
Double.parseDouble(String.valueOf(d)) == d换句话说,解析序列化的(使用String.valueOf())双精度值总是会产生精确的原始双精度值吗?
发布于 2012-06-29 01:30:49
除了你所说的NaN,是的,这个不变量应该保持不变。如果不是,那就是JDK的bug。
Double.toString在其Javadoc中这样说:
m或a的小数部分必须打印多少位?必须至少有一个数字来表示小数部分,除此之外,必须有足够多的数字来唯一区分参数值和类型为double的相邻值。也就是说,假设x是由此方法产生的用于有限非零参数d的十进制表示所表示的精确的数学值,则d必须是最接近x的双精度值;或者,如果两个双精度值同样接近x,则d必须是其中之一,并且d的有效位的最低有效位必须为0。
总之,它返回足够多的数字来唯一地标识这个双精度值,因此Double.parseDouble应该返回与转换为字符串的双精度值完全相同的双精度值。
https://stackoverflow.com/questions/11249894
复制相似问题