亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

使用BigDecimal進行精確運算(實現加減乘除運算)

2019-11-26 15:53:42
字體:
來源:轉載
供稿:網友


首先我們先來看如下代碼示例:

復制代碼 代碼如下:

public class Test_1 {
public static void main(String[] args) {
System.out.println(0.06+0.01);
System.out.println(1.0-0.42);
System.out.println(4.015*100);
System.out.println(303.1/1000);
}
}

運行結果如下
0.06999999999999999
 0.5800000000000001
 401.49999999999994
 0.30310000000000004

你認為你看錯了,但結果卻是是這樣的。問題在哪里呢?原因在于我們的計算機是二進制的。浮點數沒有辦法是用二進制進行精確表示。我們的CPU表示浮點數由兩個部分組成:指數和尾數,這樣的表示方法一般都會失去一定的精確度,有些浮點數運算也會產生一定的誤差。如:2.4的二進制表示并非就是精確的2.4。反而最為接近的二進制表示是 2.3999999999999999。浮點數的值實際上是由一個特定的數學公式計算得到的。
其實java的float只能用來進行科學計算或工程計算,在大多數的商業計算中,一般采用java.math.BigDecimal類來進行精確計算。
在使用BigDecimal類來進行計算的時候,主要分為以下步驟:
1、用float或者double變量構建BigDecimal對象。
2、通過調用BigDecimal的加,減,乘,除等相應的方法進行算術運算。
3、把BigDecimal對象轉換成float,double,int等類型。
一般來說,可以使用BigDecimal的構造方法或者靜態方法的valueOf()方法把基本類型的變量構建成BigDecimal對象。

復制代碼 代碼如下:

BigDecimal b1 = new BigDecimal(Double.toString(0.48));
BigDecimal b2 = BigDecimal.valueOf(0.48);

對于常用的加,減,乘,除,BigDecimal類提供了相應的成員方法。

復制代碼 代碼如下:

public BigDecimal add(BigDecimal value);//加法
public BigDecimal subtract(BigDecimal value); //減法
public BigDecimal multiply(BigDecimal value); //乘法
public BigDecimal divide(BigDecimal value); //除法

進行相應的計算后,我們可能需要將BigDecimal對象轉換成相應的基本數據類型的變量,可以使用floatValue(),doubleValue()等方法。
下面是一個工具類,該工具類提供加,減,乘,除運算。

復制代碼 代碼如下:

public class Arith {
/**
 * 提供精確加法計算的add方法
 * @param value1 被加數
 * @param value2 加數
 * @return 兩個參數的和
 */
public static double add(double value1,double value2){
BigDecimal b1 = new BigDecimal(Double.valueOf(value1));
BigDecimal b2 = new BigDecimal(Double.valueOf(value2));
return b1.add(b2).doubleValue();
}

/**
 * 提供精確減法運算的sub方法
 * @param value1 被減數
 * @param value2 減數
 * @return 兩個參數的差
 */
public static double sub(double value1,double value2){
BigDecimal b1 = new BigDecimal(Double.valueOf(value1));
BigDecimal b2 = new BigDecimal(Double.valueOf(value2));
return b1.subtract(b2).doubleValue();
}

/**
 * 提供精確乘法運算的mul方法
 * @param value1 被乘數
 * @param value2 乘數
 * @return 兩個參數的積
 */
public static double mul(double value1,double value2){
BigDecimal b1 = new BigDecimal(Double.valueOf(value1));
BigDecimal b2 = new BigDecimal(Double.valueOf(value2));
return b1.multiply(b2).doubleValue();
}

/**
 * 提供精確的除法運算方法div
 * @param value1 被除數
 * @param value2 除數
 * @param scale 精確范圍
 * @return 兩個參數的商
 * @throws IllegalAccessException
 */
public static double div(double value1,double value2,int scale) throws IllegalAccessException{
//如果精確范圍小于0,拋出異常信息
if(scale<0){
  throw new IllegalAccessException("精確度不能小于0");
}
BigDecimal b1 = new BigDecimal(Double.valueOf(value1));
BigDecimal b2 = new BigDecimal(Double.valueOf(value2));
return b1.divide(b2, scale).doubleValue();
}
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久一区| 97视频网站入口| 日韩激情视频在线| 欧美一级免费看| 久久久精品视频成人| 社区色欧美激情 | 国产精品日韩一区| 中文字幕在线日韩| 欧美色视频日本高清在线观看| 欧美精品久久久久久久免费观看| 国产精品成人一区| 欧美日韩亚洲高清| 国产精品国模在线| 国产伦精品一区二区三区精品视频| 亚洲综合最新在线| 欧美国产高跟鞋裸体秀xxxhd| 成人激情综合网| 欧美成人免费大片| 亚洲最大av在线| 欧美性感美女h网站在线观看免费| 国产精品自拍小视频| 久久精品91久久久久久再现| 久久精品中文字幕免费mv| 国产在线观看一区二区三区| 九色91av视频| 日本在线观看天堂男亚洲| 日韩av中文字幕在线播放| 欧美性猛交xxxx免费看久久久| 亚洲精品www久久久| 国产欧美一区二区| 亚洲天堂精品在线| 欧美日韩国产限制| 欧美日韩国产激情| 国产中文字幕亚洲| 国产a级全部精品| 欧美性猛交xxxxx免费看| 欧美在线激情视频| 欧美一级淫片丝袜脚交| 亚洲欧美一区二区三区久久| 日韩精品中文字幕在线播放| 国产精欧美一区二区三区| 日韩av影视综合网| 亚洲第一区中文99精品| 91影视免费在线观看| 日本在线精品视频| 亚洲视频免费一区| 久久久精品视频在线观看| 国产精品91久久久久久| 国产成人精品综合| 成人xvideos免费视频| 成人免费淫片视频软件| 国产成人精品国内自产拍免费看| 国内揄拍国内精品| 亚洲国产精品久久| 欧美最猛性xxxxx(亚洲精品)| 成人xvideos免费视频| 亚洲精品小视频在线观看| 精品国产网站地址| 亚洲黄色在线看| 欧美xxxx18性欧美| **欧美日韩vr在线| 欧美一区二三区| 亚洲成人教育av| 66m—66摸成人免费视频| 国产91精品久久久久久| 久久噜噜噜精品国产亚洲综合| 91沈先生在线观看| 尤物99国产成人精品视频| 国产日韩欧美日韩大片| 欧美成在线观看| 国产91精品久久久久久| 欧美性xxxx极品hd欧美风情| 成人美女免费网站视频| 91免费视频网站| 不卡毛片在线看| 91中文精品字幕在线视频| 欧美贵妇videos办公室| 亚洲综合日韩中文字幕v在线| 色偷偷av一区二区三区| 日韩欧美国产免费播放| 亚洲欧洲xxxx| 欧美尺度大的性做爰视频| 久久99精品久久久久久噜噜| 亚洲欧洲国产精品| 久久成人av网站| 在线观看国产精品日韩av| 国产69久久精品成人看| 91久久国产精品91久久性色| 一区二区三区四区视频| 久久夜精品va视频免费观看| 国产视频精品在线| 亚洲福利视频免费观看| 91av视频在线观看| 中文字幕免费精品一区| 欧美国产日韩视频| 国产精品自产拍在线观看中文| 国产成人极品视频| 欧美刺激性大交免费视频| 国产精品一区二区久久精品| 97视频免费观看| 亚洲色图17p| 欧美精品一区二区免费| 91理论片午午论夜理片久久| 国产精品久久一区| 亚洲免费成人av电影| 国产日韩在线看片| 欧美在线观看网站| 国产精品主播视频| 97国产成人精品视频| 日韩精品在线视频美女| 欧美黄色三级网站| 中文字幕亚洲情99在线| 日韩精品在线私人| 亚洲视屏在线播放| 一区二区三区视频免费| 中文字幕精品影院| 亚洲成人动漫在线播放| 久久免费少妇高潮久久精品99| 久久亚洲综合国产精品99麻豆精品福利| 国产自产女人91一区在线观看| 国产在线一区二区三区| 欧美日韩日本国产| 国产精品十八以下禁看| 一区二区三区高清国产| 色视频www在线播放国产成人| 大胆人体色综合| 国产精品亚洲综合天堂夜夜| 国语自产精品视频在线看| 国产成人精品久久亚洲高清不卡| 国产高清在线不卡| 亚洲激情在线观看视频免费| 久久久亚洲网站| 国产亚洲精品一区二区| 国产成人精品久久亚洲高清不卡| 久久在线精品视频| 日韩福利视频在线观看| 亚洲人成网站777色婷婷| 亚洲人成电影在线观看天堂色| 日本欧美精品在线| 日韩精品中文字幕久久臀| 欧美xxxx做受欧美| 久久成年人视频| 久久久精品999| 伊人一区二区三区久久精品| 国产精品一区二区久久精品| 91精品国产色综合| 亚洲春色另类小说| 亚洲丝袜av一区| 国产视频久久久久| 米奇精品一区二区三区在线观看| 97超级碰碰人国产在线观看| 国产精品视频白浆免费视频| 国产精品福利小视频| 国产精品精品一区二区三区午夜版| 精品丝袜一区二区三区| 亚洲乱码一区av黑人高潮| 日韩黄色高清视频| 视频在线一区二区| 国产成人精品一区二区在线| 国内免费久久久久久久久久久| 成人性生交大片免费看视频直播| 亚洲视频电影图片偷拍一区| 亚洲免费av片| 一区二区三区日韩在线|