Java 大十进制数格式异常
2022-09-04 07:33:36
为什么下面的代码会引发 java 数字格式异常?
BigDecimal d = new BigDecimal("10934,375");
为什么下面的代码会引发 java 数字格式异常?
BigDecimal d = new BigDecimal("10934,375");
是的,该类在其构造函数中不考虑任何采用 ,可以在此构造函数的 Javadoc 中读取:BigDecimal
Locale
String
分数由一个小数点后跟零个或多个小数位组成。
如果要根据不同的 ,使用逗号作为小数分隔符的 ,则需要与特定的 .Locale
java.text.DecimalFormat
Locale
例:
DecimalFormat fmt = new DecimalFormat("0.0", new DecimalFormatSymbols(Locale.GERMAN));
fmt.setParseBigDecimal(true);
BigDecimal n = (BigDecimal) fmt.parse("10934,375");
注意:您需要获取 的实例(的子类)才能调用该方法。否则,它将返回一个,即二进制浮点数,并且二进制浮点数不能准确地表示许多小数点。因此,在许多情况下,这会导致准确性的损失。DecimalFormat
NumberFormat
setParseBigDecimal
Double
问题是 构造函数 需要十进制数格式,其中小数点紧跟在十进制点之后,而不是十进制逗号,因此此特定情况的正确格式是:BigDecimal
.
,
BigDecimal d = new BigDecimal("10934.375");