//預設除法運算精度
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 儲存器中儲存的不是浮點數的直接值,而儲存的是符號,尾數,移碼 階碼三種要素,所以不能直接相加減,實際上,針對浮點數的加減法運算,只需要對代表浮點數有效部分的尾數進行加減運算。所以,浮點數...