bigdecimal使用問題

2021-09-11 02:40:50 字數 493 閱讀 4890

初始化bigdecimal型別資料的時候,不要用下圖所示的構造初始化,否則很可能會有問題;

理由:如果傳入()中的數字為小數型別,則會出現下圖所示的問題。

我看了下jdk api 的說明,找到了如下說法。

總結一下就是:

轉換小數想達到你想要的結果用

new bigdecimal(string) 或者 bigdecimal.valueof(double)這兩種方法。

這是進製轉換的問題,比如0.1,你要存到記憶體裡,會被轉換成二進位制,而二進位制是不能準確表示0.1的,底層可能已經被轉化成了超過8位的很長一長串二進位制,要盡可能的表示0.1,二進位制轉換為十進位制展示後則會以上圖所示一長串的數字表示。

BigDecimal除法問題

bigdecimal做除法時,盡量使用divide bigdecimal divisor,intscale,introundingmode 這個方法 divisor 被除數 scale保留小數字數 roundingmode保留小數時採用的方法,一般使用bigdecimal.round up 四捨五入...

BigDecimal 精度問題

在使用bigdecimal過程中,暫時遇到兩個問題,都是精度問題,乙個是精度丟失,乙個是精度顯示問題。bigdecimal建立物件有很多種方式 通過double型別去宣告bigdecimal物件時,就發生精度不准的問題 這個就不建議使用了,可以換種方式去解決這個問題,用string構造器構建物件 設...

BigDecimal使用方式

bigdecimal所建立的是物件,故我們不能使用傳統的 等算術運算子直接對其物件進行數 算,而必須呼叫其相對應的方法。方法中的引數也必須是bigdecimal的物件。構造器是類的特殊方法,專門用來建立物件,特別是帶有引數的物件。bigdecimal int 建立乙個具有引數所指定整數值的物件。bi...