//表示需要精確到小數點以後幾位
public static final int scale = 2;
/*** 提供精確的加法運算。
* @param v1 被加數
* @param v2 加數
* @return 兩個引數的和
*/public static double adddouble(double d1,double d2)
/*** 提供精確的減法運算。
* @param v1 被減數
* @param v2 減數
* @return 兩個引數的差
*/public static double subdouble(double d1,double d2)
/*** 提供精確的乘法運算。
* @param v1 被乘數
* @param v2 乘數
* @return 兩個引數的積
*/public static double muldouble(double d1,double d2)
/*** 提供(相對)精確的除法運算,當發生除不盡的情況時,精確到
* 小數點以後10位,以後的數字四捨五入。
* @param v1 被除數
* @param v2 除數
* @return 兩個引數的商
*/public static double divdouble(double d1,double d2)
/*** 提供(相對)精確的除法運算。當發生除不盡的情況時,由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,1 之間的任何浮點數都可以表達為兩個正整數的商,為了表達這樣兩個數的商,可以將相除的結果存放在一維陣列中,陣列的每個元素存放一位十進位制數字。即商的第一位存放在第乙...
階乘的精確值
例如輸入不超過1000的正整數n,輸出n 1x2x3.xn的精確結果。例如輸入30輸出 265252859812191058636308480000000 當輸入1000時1000的階乘約4 10 2567 大概3000位數字,如果採用普通的階乘演算法很明顯溢位 int fun int n 求n的階...
階乘的精確值
輸入乙個不超過1000的正整數n,輸出n 簡單輸入 30簡單輸出 265252859812191058636308480000000 include include define maxn 3000 int f maxn 演算法分析 由於資料不超過1000,則最大為1000,而1000的階乘那是很大...