您好,登錄后才能下訂單哦!
最近一個IOS項目中需要用到很多小數(shù)計算,對精度要求很高。我們都知道,對計算機而言Float,Double這類浮點數(shù)因為都是以科學計數(shù)法方式存儲,所以都存在著計算上的誤差,所以不能直接對它們進行相關計算。
在每種語言中都有相應的高精度計算方式,如Java中得BigDecimal類,C#中的decimal類型都是用來解決高精度計算問題的,如貨幣計算。
在對蘋果給出的API進行查看后,發(fā)現(xiàn)了一個類-----NSDecimalNumber
下面我們就來看看它里面我們需要的方法定義:
- decimalNumberByAdding:
- decimalNumberBySubtracting:
- decimalNumberByMultiplyingBy:
- decimalNumberByDividingBy:
以上4個方法分別代表著我們四則運算中得加減乘除。
這樣應該很好理解如何進行我們的高精度計算了,以下為我寫的用于理解的例子,addendValue和augendValue為NSString類型,可以將需要運算的數(shù)字轉化成相應位數(shù)的NSString類型后進行高精度計算:
NSDecimalNumber *addendNumber = [NSDecimalNumber decimalNumberWithString:addendValue]; NSDecimalNumber *augendNumber = [NSDecimalNumber decimalNumberWithString:augendValue]; NSDecimalNumber *sumNumber = [addendNumber decimalNumberByAdding:augendNumber];
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。