我正在爲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. 在iPhone中添加兩個UITextView問題?
- 2. 如何將這兩個值一起添加到目標c
- 3. 問題在返回值目標-C
- 4. 在C++中執行long double的問題
- 5. 在C#項目中添加C++ dll參考的問題
- 6. 目標C - OS X - 將NSShadow添加到NSImageView中問題
- 7. 向ArrayList添加遊標值的問題
- 8. datetime問題在目標c
- 9. stringByAppendingString問題在目標c
- 10. 如何在jformattedtextfield中僅添加double值
- 11. 目標C問題
- 12. 在VS8中找到兩個double值的錯誤C#
- 13. 問題添加標籤欄項目UITabBar
- 14. 在ListBox中添加項目時,BackgroundWorker在C#中給出問題?
- 15. C#ListView問題添加項目
- 16. 問題到membervariables分配值,目標C
- 17. C - long double和printf問題
- 18. C#double,小數問題
- 19. C++ Mastermind Double White Peg問題
- 20. 目標C - 2個簡單的問題
- 21. 子類中的double值問題
- 22. sqlite3_prepare()的問題目標C
- 23. 問題的目標C
- 24. 在目標c中添加分數
- 25. 在iOS中添加Cloudinary Pod目標C
- 26. 在同一頁面中添加兩個表格的標題
- 27. 混合問題目標C和C++在單個文件中
- 28. C#添加兩個通用值
- 29. 無法在Swift項目中添加Objective C橋接標題
- 30. 在ImpressPages的標題中添加徽標時出現問題
有趣的是,當我添加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的相同結果。 –