java BigDecimal相關操作

2021-08-09 19:49:00 字數 1046 閱讀 7653

在進行涉及金額計算,尤其是金融類的,對資料精度有嚴格的要求,所以這種場景,bigdecimal就派上用場了。

一:建構函式

常用的兩種:1

bigdecimal a= new bigdecimal("1.17745");//傳string

bigdecimal b= new bigdecimal(5.17745);//傳double

建議使用第一種方式,第二種,童鞋可以試下,會有奇妙的發現。

二:bigdecimal的加減乘除

a.add(b);

a.subtract(b);

a.multiply(b);

a.divide(b);

三:保留小數後兩位

system.out.println(decimal);

bigdecimal setscale = decimal.setscale(2,bigdecimal.round_half_down);//四捨五入

system.out.println(setscale);

bigdecimal setscale1 = decimal.setscale(2,bigdecimal.round_half_up);//四捨五入往上取值 

1.5 ->;2

system.out.println(setscale1);

bigdecimal setscale2 = decimal.setscale(2, bigdecimal.round_up);//四捨五入往下取值

1.5 ->;1

system.out.println(setscale2);

round_down相當於乙個擷取字串的操作 1.77777->1.77

1.3333333->1.33

round_floor     

如果bigdecimal為正,則作round_up;如果為負,則作round_down

注意:bigdecimal

都是不可變的(

immutable

)的,在進行每一步運算時,都會產生乙個新的物件,所以在做加減乘除運算時千萬要儲存操作後的值

JAVA BigDecimal類 高精度計算

bigdecimal類在計算時能夠精確表示 計算浮點數不會丟失精度。public bigdecimal string val 例項化乙個高精度浮點數 public bigdecimal add bigdecimal augend 加 public bigdecimal subtract bigdec...

JAVA BigDecimal型別加減乘除操作

為什麼要使用bigdecimal型別呢?bigdecimal可以進行超過16位有效位的數值的準確運算,而我們所熟知的浮點型float的精度為6 7位有效數字,double型別則為15 16位有效數字。這不是關鍵,浮點型變數在進行計算的時候會出現丟失精度的問題,所以我們為了保證資料的準確性,需要用到b...

Java BigDecimal 一些注意點

float和double型別的主要設計目標是為了科學計算和工程計算。他們執行二進位制浮點運算,這是為了在廣域數值範圍上提供較為精確的快速近似計算而精心設計的。然而,它們沒有提供完全精確的結果,所以不應該被用於要求精確結果的場合。但是,商業計算往往要求結果精確,這時候就要使用bigdecimal啦。b...