gpt4 book ai didi

Java大十进制数格式异常

转载 作者:搜寻专家 更新时间:2023-10-30 21:17:41 24 4
gpt4 key购买 nike

为什么下面的代码会抛出java数字格式异常?

BigDecimal d = new BigDecimal("10934,375");

最佳答案

是的,BigDecimal 类在其采用 String 的构造函数中不考虑任何 Locale,正如可以在此构造函数的 Javadoc:

the fraction consists of a decimal point followed by zero or more decimal digits.

如果你想根据不同的 Locale 进行解析,即使用逗号作为小数点分隔符,你需要使用 java.text.DecimalFormat 和特定的 语言环境

例子:

DecimalFormat fmt = new DecimalFormat("0.0", new DecimalFormatSymbols(Locale.GERMAN));
fmt.setParseBigDecimal(true);
BigDecimal n = (BigDecimal) fmt.parse("10934,375");

注意:您需要获取 DecimalFormat 的实例(NumberFormat 的子类)才能调用方法 setParseBigDecimal。否则它返回一个 Double,它是一个二进制 float ,和二进制 float cannot accurately represent many decimal fractions .因此,在许多情况下,这会导致准确性下降。

关于Java大十进制数格式异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22454133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com