C++標準保證我們只能安全地往返十進制值,最大爲 ,對於double
,值爲std::numeric_limits<double>::digits10
。 閱讀本post後,我不知道是否爲整數值此閾值,它延伸到std::numeric_limits<double>::digits10
+1安全往返整數值與IEEE 754浮點雙精度數據類型
3
A
回答
2
的std :: numeric_limits :: digits10是15,因爲只有是15位或更小,保證往返值從小數到雙精度和返回。一些16位數值會往返,但不是全部。在整數情況下,只有那些< = 2^53 = 9007199254740992才能保證往返(因爲它們完全表示)。 9007199254740993,例如,返回爲9007199254740992.
+1
請注意,只有奇數有問題,偶數就可以,直到達到18014398509481984。 –
+0
@ MarkRansom是的,這是一個更好的方式來表達它。這聽起來並不神祕,「一些16位數值會往返,但不是全部」。 –
相關問題
- 1. IEEE 754和浮點精度
- 2. IEEE-754單精度浮點數mips
- 3. 十六進制浮點數IEEE 754雙精度C++
- 4. 如何僅使用整數算術生成IEEE 754單精度浮點數?
- 5. 單精度IEEE 754浮點數的格式化
- 6. 有關IEEE 754單精度浮點數的問題
- 7. Java - 將十六進制轉換爲IEEE-754 64位浮點數 - 雙精度
- 8. 標準雙精度IEEE浮點數有多少位的精度?
- 9. SQL Server雙精度數據類型是IEEE 754標準的實現嗎?
- 10. 返回浮點類型是否完全符合IEEE-754的函數?
- 11. 減去單精度IEEE 754數字
- 12. 如何將十六進制值轉換爲單精度浮點數和根據IEEE-754格式的雙精度浮點數
- 13. IEEE-754浮點數舍入機制
- 14. Octave數據類型 - 浮點數和雙精度
- 15. IEEE 754浮點表示法
- 16. 從MIPS C到Java轉換的IEEE 754雙精度數字
- 17. 轉換爲IEEE 754單精度浮點格式幫助
- 18. 什麼是單精度32位IEEE 754浮點?
- 19. 如何輸出IEEE-754格式的整數作爲浮點數
- 20. 使用IEEE 754將浮點數轉換爲基數10使用IEEE 754
- 21. 獲取浮點型IEEE單精度位
- 22. 雙精度和單精度浮點數?
- 23. IEEE雙精度
- 24. 雙精度浮點數和其他浮點數精度
- 25. 的Verilog IEEE 754單精度整數轉換
- 26. 可以推薦處理半精度浮點數(float16/IEEE 754-2008)嗎?
- 27. 在Java中獲得(十進制)浮點數的IEEE 754(單精度)表示法
- 28. 如何將IEEE 754單精度浮點格式轉換爲小數?
- 29. 754在IEEE 754浮點數中意味着什麼?
- 30. 對於IEEE 754雙精度數字,長度爲1的範圍包含最多的雙精度數?
C++標準和IEEE 754是無關的。 –
@ n.m。完全注意。 C++定義了'std :: numeric_limits :: is_iec559'(或類似的東西),它告訴我們實現是否符合IEEE 754.如果這是真的,那麼詢問如何讓C++操作符生成754個操作適合於特定的目的。 –
Potatoswatter
std :: numeric_limits :: digits10 + 1是16,並且不能往返全部16位整數(例如,9007199254740993返回爲9007199254740992)。 –