我正在解析一个我知道包含数字的字符串值。
如果它仅包含数字,并且介于Integer.MIN_VALUE和Integer.MAX_VALUE之间,则将其解析为一个int,类似的时间很长,否则我将使用BigInteger。
如果它包含一个十进制值,我想将其解析为双精度或BigDecimal。
我可以测试字符串中的数字值是否适合双精度数,因此可以安全地解析为双精度数,或者是否需要将其保留在BigDecimal中以防止精度下降?
并因此可以安全地解析为双精度数,或者是否需要将其解析为BigDecimal以防止精度损失?
这不是您要寻找的答案,但是由于您似乎担心精度下降,因此应使用BigDecimal
代替any double
。
数0.1
可以适合于double
,但不是精确(因为0.1
不能在准确的二进制表示)。
请参阅:浮点数学运算是否已损坏?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句