国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

精確的浮點數運算(實際應用中經常用到)

2019-11-18 15:15:17
字體:
來源:轉載
供稿:網友

import java.math.BigDecimal;

 

/**

* 由于Java的簡單類型不能夠精確的對浮點數進行運算,這個工具類提供精

* 確的浮點數運算,包括加減乘除和四舍五入。

*/

public class Arith{

 

//默認除法運算精度

PRivate static final int DEF_DIV_SCALE = 10;

 

//這個類不能實例化

private Arith(){

}

 

 

/**

* 提供精確的加法運算。

* @param v1 被加數

* @param v2 加數

* @return 兩個參數的和

*/

public static double add(double v1,double v2){

BigDecimal b1 = new BigDecimal(Double.toString(v1));

BigDecimal b2 = new BigDecimal(Double.toString(v2));

return b1.add(b2).doubleValue();

}

 

/**

* 提供精確的減法運算。

* @param v1 被減數

* @param v2 減數

* @return 兩個參數的差

*/

public static double sub(double v1,double v2){

BigDecimal b1 = new BigDecimal(Double.toString(v1));

BigDecimal b2 = new BigDecimal(Double.toString(v2));

return b1.suBTract(b2).doubleValue();

}

 

/**

* 提供精確的乘法運算。

* @param v1 被乘數

* @param v2 乘數

* @return 兩個參數的積

*/

public static double mul(double v1,double v2){

BigDecimal b1 = new BigDecimal(Double.toString(v1));

BigDecimal b2 = new BigDecimal(Double.toString(v2));

return b1.multiply(b2).doubleValue();

}

 

/**

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

* 小數點以后10位,以后的數字四舍五入。

* @param v1 被除數

* @param v2 除數

* @return 兩個參數的商

*/

public static double div(double v1,double v2){

return div(v1,v2,DEF_DIV_SCALE);

}

 

/**

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

* 定精度,以后的數字四舍五入。

* @param v1 被除數

* @param v2 除數

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

* @return 兩個參數的商

*/

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

if(scale<0){

throw new IllegalArgumentException(

"The scale must be a positive integer or zero");

}

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){

if(scale<0){

throw new IllegalArgumentException(

"The scale must be a positive integer or zero");

}

BigDecimal b = new BigDecimal(Double.toString(v));

BigDecimal one = new BigDecimal("1");



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 紫云| 安庆市| 武宁县| 邯郸县| 修武县| 樟树市| 新宾| 南平市| 上虞市| 舞阳县| 榆林市| 木里| 含山县| 鹤岗市| 泉州市| 通渭县| 漯河市| 满洲里市| 霍林郭勒市| 安阳市| 邯郸市| 成武县| 吴桥县| 香格里拉县| 方城县| 万山特区| 安远县| 卫辉市| 全椒县| 黔西县| 铁力市| 皮山县| 微博| 奉新县| 富源县| 泰宁县| 清远市| 珲春市| 白城市| 绥中县| 连平县|