Java中對double型別保留兩位小數的方法

2021-07-23 19:20:02 字數 886 閱讀 1958

整理了網上一些方法,方便以後查閱。

1.使用bigdecimal類

bigdecimal b1 = new bigdecimal(width);

bigdecimal b2 = new bigdecimal(height);

bigdecimal b3 = b1.multiply(b2);

return b3.setscale(2, bigdecimal.round_half_up).doublevalue();

setscale方法中,第乙個引數可選1或2,3以及大於3都還是保留兩位小數

2.string.format

system.out.println(string.format("%.2f", rec2.getarea()));

便於輸出,%後面的數字即為要保留的小數字數

3.decimalformat

decimalformat df = new decimalformat("#.00");  

system.out.println(df.format(4.125));

需注意的是,該方法只對部分double型別資料有效,原因不明

如上述4.125,保留兩位小數應該為4.13,但執行結果為4.12

以及0.123,正確結果為0.12,輸出結果為 .12

4.math

(double)math.round(0.123*100)/100
這個方法看似沒道理,但是測試資料輸出都是正確的

即便於輸出,而且也便於邏輯處理時計算

注意前面的double轉型不可不加!

Junit中對double型別進行assert對比

在junit測試中使用到了將double型別的資料進行比較,但是出現以下錯誤 報錯資訊 the method assertequals double,double from the type assert is deprecated junit中沒有assertequals double,doubl...

Java中double型別資料的比較

double a 0.001 double b 0.0011 bigdecimal data1 new bigdecimal a bigdecimal data2 new bigdecimal b data1.compareto data2 非整型數,運算由於精度問題,可能會有誤差,建議使用bigd...

在JAVA中怎麼比較Double型別資料的大小?

double a 0.001 double b 0.0011 bigdecimal data1 new bigdecimal a bigdecimal data2 new bigdecimal b data1.compareto data2 非整型數,運算由於精度問題,可能會有誤差,建議使用bigd...