国产探花免费观看_亚洲丰满少妇自慰呻吟_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");



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鄂托克前旗| 沁水县| 读书| 双桥区| 静安区| 怀集县| 南川市| 灵石县| 曲沃县| 永州市| 凤台县| 霍州市| 固阳县| 绥滨县| 晋江市| 连江县| 永年县| 肇州县| 博客| 武夷山市| 奈曼旗| 谷城县| 黑山县| 南充市| 肥乡县| 淳安县| 焦作市| 井研县| 商洛市| 乡宁县| 广平县| 黔东| 吉林市| 长海县| 二连浩特市| 舟山市| 贵南县| 凤台县| 兴城市| 秦皇岛市| 武宁县|