導航:首頁 > 編程語言 > java中double類型相加

java中double類型相加

發布時間:2025-10-03 04:59:09

1. java int double 加減法 基本類型運算問題

1.-2.8421709430404007E-14表示-2.8421709430404007乘以10的-14次方,計算機能准確表示十進制的整數,但不能准確表示十進制小數。System.out.println(150.0+0+183.28-0-183.28-150.0);150.0+0+183.28-0-183.28-150.0的結果為0.00000000000...,只不過你的輸出結果為double型,精度比較高,沒有超出列印函數(println之類的)的默認精度而已。

2.System.out.println(((150.00)+0.00+(183.28))-(0.00+(183.28)+(150.00)));中將((150.00)+0.00+(183.28))作為個運算單元,二個括弧內的運算的結果肯定一樣,與精度無關。結果當然為0。

3.用System.out.println((long)(150.0+0+183.28-0-183.28-150.0));(150.0+0+183.28-0-183.28-150.0)的結果為0.00000000...,轉換成long,舍棄小數位,結果自然為0;

4.System.out.println(150.0F+0+183.28F-0-183.28F-150.0F); 運算結果為float型,超出列印函數(println之類的)的默認精度,截取下來為0。

不知道解釋的你滿意不?

2. java用double和float進行計算有時候精度不準確怎麼辦

在大多數情況下,使用double和float計算的結果是准確的,但是在一些精度要求很高的系統中,這種問題是非常嚴重的。

在《Effective Java》中提到一個原則,那就是float和double只能用來作科學計算或者是工程計算,但在商業計算中我們要用java.math.BigDecimal,通過使用BigDecimal類可以解決上述問題,實例代碼如下:

packageex;

importjava.math.*;

publicclassBigDecimalDemo{
publicstaticvoidmain(String[]args){
System.out.println(ArithUtil.add(0.01,0.05));
System.out.println(ArithUtil.sub(1.0,0.42));
System.out.println(ArithUtil.mul(4.015,100));
System.out.println(ArithUtil.div(123.3,100));
}
}

classArithUtil{
privatestaticfinalintDEF_DIV_SCALE=10;

privateArithUtil(){}
//相加
publicstaticdoubleadd(doubled1,doubled2){
BigDecimalb1=newBigDecimal(Double.toString(d1));
BigDecimalb2=newBigDecimal(Double.toString(d2));
returnb1.add(b2).doubleValue();

}
//相減
publicstaticdoublesub(doubled1,doubled2){
BigDecimalb1=newBigDecimal(Double.toString(d1));
BigDecimalb2=newBigDecimal(Double.toString(d2));
returnb1.subtract(b2).doubleValue();

}
//相乘
publicstaticdoublemul(doubled1,doubled2){
BigDecimalb1=newBigDecimal(Double.toString(d1));
BigDecimalb2=newBigDecimal(Double.toString(d2));
returnb1.multiply(b2).doubleValue();

}
//相除
publicstaticdoublediv(doubled1,doubled2){

returndiv(d1,d2,DEF_DIV_SCALE);

}

publicstaticdoublediv(doubled1,doubled2,intscale){
if(scale<0){
("");
}
BigDecimalb1=newBigDecimal(Double.toString(d1));
BigDecimalb2=newBigDecimal(Double.toString(d2));
returnb1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();

}

}
閱讀全文

與java中double類型相加相關的資料

熱點內容
安卓鎖屏破解工具apk 瀏覽:247
qq女生頭像韓系全身 瀏覽:830
手機qq2012java版 瀏覽:501
手機上怎麼把電影字幕文件 瀏覽:559
微信群里文件最大限量多少 瀏覽:134
js屏蔽滑鼠右鍵的代碼 瀏覽:660
301醫院app 瀏覽:337
java註解大全 瀏覽:531
怎麼刪除注冊表裡的數據 瀏覽:482
黑莓安裝版本區別 瀏覽:180
java中double類型相加 瀏覽:29
手機傳文件電視 瀏覽:205
nodejs中間層 瀏覽:237
如何解決網路的信號問題 瀏覽:490
es文件瀏覽器本地視頻 瀏覽:354
vba打開指定文件夾 瀏覽:815
可編程式控制制器可以應用於哪些領域 瀏覽:372
分欄文件夾 瀏覽:481
網路上apple是什麼意思 瀏覽:356
如何合並帶括弧的數據 瀏覽:62

友情鏈接