我是一位经验丰富的开发人员,但不是数学专家。我对IEEE浮点规范了解得足够多,因此害怕做出关于解析,打印和比较它们的假设。
我知道我可以使用double
从String
解析Double.parseDouble(String s)
。我知道我也可以使用Double.parseDouble(String s)
将相同的字符串解析为BigDecimal
,然后使用new BigDecimal(String s)
向new BigDecimal(String s)
询问BigDecimal
。
我浏览了这两种技术的API和代码,似乎double
有很多不同的解析和转换选项。
对于所有字符串输入,是否都保证两种技术(BigDecimal.doubleValue()
和BigDecimal.doubleValue()
)都能产生完全相同的BigDecimal
基本值,只要该值不在正负Double.parseDouble(s)
的范围内?
是。我在超级计算机上一一测试了所有2 ^ 64种组合。