過大的整數和小數運算誤差

2021-09-28 11:42:48 字數 1481 閱讀 1000

biginteger i =

newbiginteger

(引數為字串:例如 「234234444444444444444234」)

常用方法
1. 加減乘除

加法:add

(bigdecimal bd)

減法:subtract

(bigdecimal bd)

乘法:multiply

(bigdecimal bd)

除法:divide

(bigdecimal bd)

1.類應用場景

商用系統在計算金額這類小數時,由於double精度缺失的問題,往往會發生不可預知的情況,故而會使用bigdecimal。

2.建構函式

此類的建構函式很多,此處著重記錄乙個建構函式:

bigdecimal(string s):此處的s並不是適用於所有的字串,僅適用於數字型別的字串。

new bigdecimal(引數為字串: 例如 「23432423423」)

bigdecimal bd1 =

newbigdecimal

("ssss");

//numberformatexception異常

bigdecimal bd2 =

newbigdecimal

("2.256");

//正確方式

3.常用方法
1. 加減乘除

加法:add

(bigdecimal bd)

減法:subtract

(bigdecimal bd)

乘法:multiply

(bigdecimal bd)

除法:divide

(bigdecimal bd)

4.注意事項

建構函式中,bigdecimal(double d)最好不要使用,會發生不可預知的結果,最好使用bigdecimal(string s)這個建構函式;

bigdecimal bd5 =

newbigdecimal

(156.1);

system.out.

println

(bd5)

;//輸出156.099999999999994315658113919198513031005859375

bigdecimal這個類是不可變的,類似string。

bigdecimal bd1 =

newbigdecimal

("2.3");

bigdecimal bd2 =

newbigdecimal(0

);bd2.

add(bd1)

;system.out.

println

(bd2)

;//輸出0

iOS整數及小數加法運算

獲取第乙個標籤的值 nsinteger num1 self.number1.text integervalue 獲取第二個標籤的值 nsinteger num2 self.number2.text integervalue 設定文字標籤的值 獲取第乙個標籤的值 nsdecimalnumber num...

分離整數和小數部分

程式 include include csdn學院 2016級 檔名稱 myfun8.c 完成日期 2016年10月25日 問題描述 編寫乙個程式,其功能為 從鍵盤上輸入乙個浮點數 小數點後有三位數 然後分別輸出該數的整數部分和小數部分。int main 輸出結果 知識點總結 主要運用了強制資料型別...

絕對誤差和相對誤差的定義

一 絕對誤差和相對誤差的定義 gb t 2900.77 2008 電工術語 電工電子測量和儀器儀表 第1部分 測量的通用術語 定義 絕對誤差是指校準值和比對值的代數差。相對誤差是指絕對誤差與比對值的比。比對值為該量的真值,但由於真值無法確定,所以一般使用約定真值。二 絕對誤差和相對誤差的關係 根據定...