如何获得唯一确定给定double的"最短"BigDecimal

aio*_*obe 7 java double bigdecimal

基本上,我很好奇如何在new BigDecimal(Double.toString(d))不经历创建字符串的过程中掌握.

对文件Double.toString是相当复杂的(和有趣).据我了解,该方法实际上并不返回给定double实际表示的数字的字符串表示,而是唯一标识给定double的(near by)最短实数的字符串表示.

(我实际上并不需要这个.如果我这样做,我可能会通过一个字符串.我只是好奇这个算法找到这个"短"实数,唯一确定给定的双值.)

(这是关于这个问题的后续问题.)

Dou*_*rie 2

请参阅: 如何准确打印浮点数如何准确读取浮点数

实现:这里这里

有一本关于这个主题的新出版物,那些寻求提供解决方案的人可能会感兴趣。如果您愿意在 99.8% 的情况下使用最短的字符串,并在其余情况下使用准确但不是最短的字符串,那么它(Grisu2)无需使用 bignums 即可工作。