【发布时间】:2019-04-11 03:53:33
【问题描述】:
我正在解析一个我知道包含数字的字符串值。
如果它只包含数字并且它在 Integer.MIN_VALUE 和 Integer.MAX_VALUE 之间,我会将其解析为 int,类似地处理 long,否则我将使用 BigInteger。
如果它包含十进制值,我想将其解析为双精度或 BigDecimal。
我可以测试字符串中的数值是否“适合”双精度数,因此可以安全地解析为双精度数,或者是否需要将其保存在 BigDecimal 中以防止精度损失?
【问题讨论】:
-
new Integer(String) 会起作用吗?如果它抛出异常,您可以尝试其他选项
-
一般来说,如果你只坚持一种数字类型,你的生活几乎肯定会简单得多。如果您有一个可以表示任意十进制数的字符串,请使用
BigDecimal而不是尝试在int、BigInteger、long、double、BigDecimal之间切换。尝试切换类型会增加复杂性,而这几乎不会真正带来有意义的好处。
标签: java types casting double bigdecimal