java的double型別數字計算相關

2021-09-13 17:33:41 字數 724 閱讀 6260

在專案中遇到乙個問題用double型別的數字(小數點後只有兩位)相加或者相減得出的結果並不是預期的結果,乘除也一樣。

double d1 =  1.11;
double d2 =  11.02;
列印結果為:12.129999999999999

//保留兩位小數

string.format("%.2f", double);

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

df.format(double)

double d = 0.3;

bigdecimal b = new bigdecimal("0.3");

// 使用構造器時最好使用string的構造器

bigdecimal bd = new bigdecimal(d.tostring());

b.add(bd);

b.subtract(bd);

b.multiply(bd);

bigdecimal result = b.divide(bd);

//去掉bigdecimal末尾多餘的0並tostring

//如果直接tostring有可能是科學計數,需要 toplainstring()。

result.striptrailingzeros().toplainstring()

java保留double型別固定小數字數的方法

方法一 用string類的format方法 例如 double x 1.23456789 system.out.println string.format 6f x 表示四捨五入保留六位小數。system.out.println string.format 3f x 表示四捨五入保留3位小數 輸出為...

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...