精確的浮點數運算(加減乘除 四捨五入)

2022-08-20 14:21:16 字數 2343 閱讀 9790

//預設除法運算精度

private static final int def_div_scale = 10;

/**

* 提供精確的加法運算。

* @param v1 被加數

* @param v2 加數

* @return 兩個引數的和

*/

public static double add(double v1,double v2)

/**

* 提供精確的減法運算。

* @param v1 被減數

* @param v2 減數

* @return 兩個引數的差

*/

public static double sub(double v1,double v2)

/**

* 提供精確的乘法運算。

* @param v1 被乘數

* @param v2 乘數

* @return 兩個引數的積

*/

public static double mul(double v1,double v2)

/**

* 提供(相對)精確的除法運算,當發生除不盡的情況時,精確到

* 小數點以後10位,以後的數字四捨五入。

* @param v1 被除數

* @param v2 除數

* @return 兩個引數的商

*/

public static double div(double v1,double v2)

/**

* 提供(相對)精確的除法運算。當發生除不盡的情況時,由scale引數指

* 定精度,以後的數字四捨五入。

* @param v1 被除數

* @param v2 除數

* @param scale 表示表示需要精確到小數點以後幾位。

* @return 兩個引數的商

*/

public static double div(double v1,double v2,int scale)

bigdecimal b1 = new bigdecimal(double.tostring(v1));

bigdecimal b2 = new bigdecimal(double.tostring(v2));

return b1.divide(b2,scale,bigdecimal.round_half_up).doublevalue();

}

/**

* 提供精確的小數字四捨五入處理。

* @param v 需要四捨五入的數字

* @param scale 小數點後保留幾位

* @return 四捨五入後的結果

*/

public static double round(double v,int scale)

bigdecimal b = new bigdecimal(double.tostring(v));

bigdecimal one = new bigdecimal("1");

return b.divide(one,scale,bigdecimal.round_half_up).doublevalue();

}

/*** 精確到小數點0.00

* * @param number

* @return

*/public static string diverssion(double number)

/*** 精確到小數點0

* * @param number

* @return

*/public static string diver(double number)

/*** 精確到小數點0.000

* * @param number

* @return

*/public static string divthree(double number)

float浮點數的四捨五入

前幾天,有個小夥伴在做實驗過程中,發現了乙個奇怪的現象,這個現象就是 他在用printf輸出浮點數的時候,想把資料保留到小數點後的兩位,他是這麼寫的 float c 1.155 printf 2f c 他的書寫是對的,沒有錯誤。但是他發現,當c等於1.555時,保留兩位小數輸出是1.55,而當c等於...

Python 執行精確的浮點數運算

需要對浮點數執行精確的計算操作,並且不希望有任何小誤差的出現.浮點數的乙個普遍問題是它們並不能精確的表示十進位制數。並且,即使是最簡單的 數 算也會產生小的誤差,比如 a 4.2 b 2.1 a b 6.300000000000001 a b 6.3 false false 是由於底層cpu和iee...

浮點數的加減法運算

浮點數與定點數相比較有兩個比較明顯地特點 1 小數點位置不固定,但是在浮點數加減法運算的時候,小數點必須對齊 2 儲存器中儲存的不是浮點數的直接值,而儲存的是符號,尾數,移碼 階碼三種要素,所以不能直接相加減,實際上,針對浮點數的加減法運算,只需要對代表浮點數有效部分的尾數進行加減運算。所以,浮點數...