double轉BigDecimal的精度問題

2022-02-25 00:54:00 字數 629 閱讀 6730

1.問題 : 今天在寫** 將double 轉成bigdecimal 的時候 , 發現轉成的資料跟原資料不太一樣

double b=57.3;

bigdecimal decimalb=new

bigdecimal(b);

system.out.println(decimalb);

//結果

57.2999999999999971578290569595992565155029296875

很明顯 , 精度丟失.

2.解決 : 

double c=57.3;

bigdecimal decimalc=new

bigdecimal(double.tostring(c));

system.out.println(decimalc);

double d=57.3;

bigdecimal decimald=bigdecimal.valueof(d);

system.out.println(decimald);

//結果

57.3

57.3

借鑑原文 :

這位老哥寫的比較細 , 我的寫的主要是給自己看的 ..哈哈....

double值的精確計算 bigdecimal

表示需要精確到小數點以後幾位 public static final int scale 2 提供精確的加法運算。param v1 被加數 param v2 加數 return 兩個引數的和 public static double adddouble double d1,double d2 提供精...

CString轉換為double 創 轉

cstring轉換為double cstring strfloat float flt 或double fit 不過前面兩種方法在vs2005下執行結果不正確,在vc6.0開發環境下是可以的。說明 網上很多說的都是前兩種方法,結果double值只是字串的第乙個數字。方法一 flt float ato...

前台接受資料,Integer轉double

前台接受系列資料,後端使用object接,資料在js做了處理,是乙個百分比,1 100之間除以100,傳到後端的有可能是double,或者integer 為1時,haha,還有0,寫到這才想起來,趕緊改改程式 將object強轉為integer先判斷是夠為空,再判斷是否為0,1.為0,1則用doub...