日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發布時間:2025/3/20 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

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