质量外展预告 - JDK 19 - Double.toString() 和 Float.toString() 更改
David Delabassee 于 2022 年 9 月 23 日发布
OpenJDK 质量小组通过 OpenJDK 早期访问版本对 FOSS 项目进行测试,以此来提升版本整体质量。此预告是发送给相关项目的定期通信的一部分。如需详细了解该计划以及如何加入,请在此处查看。
JDK 19 - Double.toString()
和 Float.toString()
更改
影响 Double.toString(double)
和 Float.toString(float)
的错误已在Java 19 中修复。
根据 Javadoc,Double.toString(double)
应生成数字尽可能少的字符串,但仍能将此 double 与相邻的 double 唯一区分开来。对于许多 double 来说,情况并非如此。例如,1e23
和 9.999999999999999E22
是相同的 double,而将 1e23
传递给 Double.toString(double)
会返回 "9.999999999999999E22"
。
规范已更新,实现也已更新。因此,从 JDK 19 开始,生成的部分字符串现在比早期版本中生成的字符串短。例如,在 JDK 19 中将 1e23
传递给此方法将返回 "1.0E23"
,而不是早期 JDK 版本中的 "9.999999999999999E22"
。请注意,在 JDK 19 中,将 9.999999999999999E22
传递给此方法也会返回 "1.0E23"
,因为它们是相同的 double。许多 double 和 float 的字符串表示形式已更改,以匹配规范更新。
更多信息
您还可以在 Joe Darcy 出色的“浮点运算:每个 Java 程序员都应该知道!”会话中详细了解浮点运算。