精度溢位問題解決

2021-08-31 08:49:58 字數 923 閱讀 2018

float和double型的底層實現是二進位制的。十進位制中的乙個有限位數小數,轉換成二進位制就不一定是有限位數了,一旦位數超過的float和double型的位數寬度,就會出現「精度溢位」。所以float和double型是為了科學計算而設計的,並不適合精確的十進位制計算.

就像乙個十進位制的小數,要不斷地乘以2取整,但在這個過程中可能會一直迴圈下去,這就造成了資料的不精確。

所以在必須要求資料的精確度時,不能使用float和double.

public class test{

public static void main(string args)

system.out.println(0.05+0.01);

system.out.println(1.0-0.42);

system.out.println(4.015*100);

system.out.println(123.3/100);

輸出結果為:

0.060000000000000005

0.5800000000000001

401.49999999999994

1.2329999999999999

bigdecimal類可解決計算精度問題可使用bigdecimal類建立乙個封裝類。封裝加減乘除操作

例:對乙個小數進行指定位數的四捨五入:

bigdecimal bd = new bigdecimal("0.9851095");

bigdecimal one = new bigdecimal("1");

system.out.println(bd.divide(one, 3, bigdecimal.round_half_up));

bigdecimal中還有很多相關的數值之間的計算方法,以及精確到的位數和四捨五入等

tomcat記憶體溢位問題解決方法

今天在做專案時經常發生記憶體溢位的問題,每次重新編譯class都會出現這個異常,上網搜了一下資料,終於解決這個問題了!一般安裝完eclipse之後,在安裝目錄下你應該可以看到有乙個eclipse.ini 檔案,對了,就是在這個檔案裡面修改,我開啟同事機器上這個檔案,裡面的內容是 vmargs dos...

打包時,node記憶體溢位問題解決方法

在使用npm run build打包時,遇到node記憶體溢位問題。網上查詢到的決絕方案。解決方案一 安裝increase memory limit外掛程式,擴大node的記憶體限制 但是,這個解決方案在我的專案裡面並沒有用 解決方案二 通過package.json加大記憶體,在啟動node nod...

解決除法溢位問題

王爽組合語言第二版實驗10.2 一 實驗要求 當用div指令進行8位除法運算時結果大於8位,或進行16位除法運算結果大於16位時,會出現除法溢位的錯誤。要求編寫乙個子程式,實現支援結果不會出現溢位的除法運算 二 演算法概述 通過乙個公式將可能產生溢位的運算x n,轉變為多個不會產生溢位的除法運算。公...