首页 > 解决方案 > 如何判断以字符串表示的十进制数是否适合双精度数?

问题描述

我正在解析一个我知道包含数字的字符串值。

如果它只包含数字并且它在 Integer.MIN_VALUE 和 Integer.MAX_VALUE 之间,我将它解析为一个 int,类似地很长,否则我使用 BigInteger。

如果它包含一个十进制值,我想将其解析为双精度或 BigDecimal。

我可以测试字符串中的数值是否“适合”双精度数,因此可以安全地解析为双精度数,或者是否需要将其保存在 BigDecimal 中以防止精度损失?

标签: javatypescastingdoublebigdecimal

解决方案


因此可以安全地解析为双精度数,或者是否需要将其保存在 BigDecimal 中以防止精度损失?

这不是您正在寻找的答案,但由于您似乎担心精度损失,您应该使用 aBigDecimal代替 any double

该数字0.1可以放在a 中double,但并不精确(因为0.1无法用二进制准确表示)。

请参阅:浮点数学是否损坏?


推荐阅读