日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BigDecimal类setScale方法问题:算数异常,精确度丢失-ArithmeticException: Rounding necessary

發布時間:2025/3/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BigDecimal类setScale方法问题:算数异常,精确度丢失-ArithmeticException: Rounding necessary 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

BigDecimal類setScale方法問題:算數異常,精確度丟失-ArithmeticException: Rounding necessary

在運行如下代碼時,

package BigDecimal精確度;import java.math.BigDecimal;public class BigDecimalSetSacle {public static void main(String[] args) {BigDecimal decimal = new BigDecimal("58.33888");BigDecimal result = decimal .setScale(2);System.out.println(result); } }
會報算數異常:

Exception in thread "main" java.lang.ArithmeticException: Rounding necessary
at java.math.BigDecimal.commonNeedIncrement(BigDecimal.java:4148)
at java.math.BigDecimal.needIncrement(BigDecimal.java:4204)
at java.math.BigDecimal.divideAndRound(BigDecimal.java:4112)
at java.math.BigDecimal.setScale(BigDecimal.java:2452)
at java.math.BigDecimal.setScale(BigDecimal.java:2512)
at BigDecimal精確度.BigDecimalSetSacle.main(BigDecimalSetSacle.java:9)



原因是:沒有設置mode,setScale方法,不給mode時,默認會設置mode為:ROUND_UNNECESSARY


但是ROUND_UNNECESSARY,在精確度丟失時,拋出異常。


所以,如果需要使用setScale方法,建議根據需要傳入指定的mode,不要使用默認,否則會拋出異常!

默認的setScale(int newSacle)方法,只要參數的newSacle的大小,比this的小數點后位數小,則會拋出異常。




總結

以上是生活随笔為你收集整理的BigDecimal类setScale方法问题:算数异常,精确度丢失-ArithmeticException: Rounding necessary的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。