加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java大十进制格式异常

发布时间:2020-12-14 16:33:20 所属栏目:Java 来源:网络整理
导读:为什么下面的代码抛出一个 java数字格式异常? BigDecimal d = new BigDecimal("10934,375"); 解决方法 是的,BigDecimal类在其构造函数中没有考虑到任何Locale,它需要一个String,可以在这个构造函数的Javadoc中读取: the fraction consists of a decimal po
为什么下面的代码抛出一个 java数字格式异常?
BigDecimal d = new BigDecimal("10934,375");

解决方法

是的,BigDecimal类在其构造函数中没有考虑到任何Locale,它需要一个String,可以在这个构造函数的Javadoc中读取:

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

如果要根据不同的区域设置进行解析,使用逗号作为小数分隔符,则需要使用具有特定区域设置的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代替,它是一个二进制浮点数,二进制浮点数为cannot accurately represent many decimal fractions.这样在许多情况下会导致精度的损失.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读