首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Double.parseDouble()和String.valueOf()的精度

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

Stack Overflow用户
提问于 2012-06-29 01:29:22
回答 1查看 2.2K关注 0票数 3

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

代码语言:javascript
复制
Double.parseDouble(String.valueOf(d)) == d

换句话说,解析序列化的(使用String.valueOf())双精度值总是会产生精确的原始双精度值吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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应该返回与转换为字符串的双精度值完全相同的双精度值。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11249894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档