我正在爲iphone和ipad編寫應用程序,我的程序需要添加兩個double值才能獲得單個double值。問題是當其中一個double值相當大(例如:2^100),另一個非常小時如1或2,添加這兩個double值的結果是錯誤的,或者甚至沒有進行加法。有誰知道這是爲什麼,如果有解決方法。謝謝。在目標c中添加兩個double值的問題
1
A
回答
6
這與obj-c無關。 A double是一個存儲浮點值的64位數據類型。在十進制中,double可以保存大約15.955位的精度。但是,您的2^100號碼有大約30位十進制數字。因此,如果您嘗試添加高達約1千萬億次的任何數據,您會發現添加不起作用,因爲這超出了數字的精確範圍。
爲了解決這個問題,你可以使用NSDecimalNumber,它可以保存38位精度的十進制數字。
1
相關問題
- 1. 如何將這兩個值一起添加到目標c
- 2. 在C++中執行long double的問題
- 3. 在C#項目中添加C++ dll參考的問題
- 4. 目標C - OS X - 將NSShadow添加到NSImageView中問題
- 5. 如何在jformattedtextfield中僅添加double值
- 6. stringByAppendingString問題在目標c
- 7. datetime問題在目標c
- 8. 在VS8中找到兩個double值的錯誤C#
- 9. 問題添加標籤欄項目UITabBar
- 10. 在ListBox中添加項目時,BackgroundWorker在C#中給出問題?
- 11. C#ListView問題添加項目
- 12. 問題到membervariables分配值,目標C
- 13. 子類中的double值問題
- 14. 在iOS中添加Cloudinary Pod目標C
- 15. C#double,小數問題
- 16. C - long double和printf問題
- 17. C++ Mastermind Double White Peg問題
- 18. 目標C - 2個簡單的問題
- 19. 問題的目標C
- 20. sqlite3_prepare()的問題目標C
- 21. 在C中舍入double值#
- 22. 在C++中修剪double值
- 23. 在ImpressPages的標題中添加徽標時出現問題
- 24. 在C#中添加兩個IQueryable(int/decimal)#
- 25. 在C++中添加兩個字符串
- 26. 添加多個項目到標題Microsoft.Office.Interop.Word
- 27. 在兩個data.tables中添加值
- 28. 添加兩個浮點值時遇到問題
- 29. 解析目標中XML的問題 - C
- 30. 目標c中的重做問題
有趣的是,當我添加2^100與另一個2^100一切正常,但是當我添加2^100像1這樣的小數字它保持不變,並且不添加1到2^100這就是我不明白的地方。 – Milad
@Milad:2^100 + 2^100可以正常工作。認爲雙重作爲科學記數法(因爲這基本上是它是什麼,除了二進制)。谷歌說2^100是1.2676506×10^30。如果你以「常規」的形式寫出來,你會注意到很多0。但是真實的數字並不包含所有這些0。科學記數法碰到了一個精確的限制 - 你會注意到小數點後面只有7位數字。這是因爲一個float大約有7個十進制數字的精度。如果這是一倍,那麼大概是15。 –
@Milad:我希望很明顯爲什麼加2^100 + 2^100很容易,因爲1.2676506×10^30加1.2676506×10^30很容易(你會得到2.5353012×10^30)。但是如果你添加1,你將如何寫出來?如果不在數字中添加另外的23位數字,那麼這些數字就沒有空間了。基本上,當你寫2^100時,你得到的是一個代表該區域大約1千萬億的數字的數字,因爲任何計算任何這些數字的嘗試都會返回2^100的相同結果。 –