//***************bigdecimal工具類封裝***************==public class bigdecimaltool
/*** 提供精確的減法運算。
* @param v1 被減數
* @param v2 減數
* @return 兩個引數的差
*/public static double sub(double v1,double v2)
public static double sub(double v1,double v2,int scle)
/*** 提供精確的乘法運算。
* @param v1 被乘數
* @param v2 乘數
* @return 兩個引數的積
*/public static double mul(double v1,double v2)
public static double mul(double v1,double v2,int scle)
/*** 提供(相對)精確的除法運算,當發生除不盡的情況時,精確到
* 小數點以後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();
}/**
* 比較浮點數是否相等
* @param one
* @param two
* @return -1 小於 0 等於 1 大於
*/public static double compare(double one, double two)
/*** 判斷乙個數是不是整數
* @param str
* @return
*/public static boolean isinteger(string str)
/*** 乙個物件獲取values
* @param value
* @return
*/public static bigdecimal getbigdecimal( object value ) else if( value instanceof string ) else if( value instanceof biginteger) else if( value instanceof number ) else
}return ret;
}
浮點數進行計算
public static void main string args 為什麼會出現這種情況?計算機採用二進位制進行計算,有些資料可以用二進位制表示。如0.5 1 2 2 1 但是有些不行,如0.1,這就好像1 3用十進位制無法準確的表示。計算機採用機器語言來表示數值,即二進位制 名稱意義 原碼正數...
定點數和浮點數 定點數和浮點數計算
這個東西其實不是很難,但是確實足夠繞的,因為從十進位制的加減乘除轉換到二進位制的加減乘除就已經很麻煩了,然後為了選拔人才,不給你二進位制,直接給你十六進製制,當然最麻煩的還是補碼和移碼,確實足夠 但是給予足夠的練習還是可以比較熟練的,公式稍後會整理到置頂的公式大全中。可以看完了以後去嘗試一下相關計算...
Warning!浮點數計算問題
在php中使用浮點數,有時會出現意想不到的結果。在程式中不注意,是很難被發現的。從而出現錯誤!下面是php手冊關於此問題的一些解釋 浮點數 也叫浮點數,雙精度數或實數 可以用以下任一語法定義 a 1.234 b 1.2e3 c 7e 10 浮點數的形式表示 lnum 0 9 dnum 0 9 0 9...