回答
要保存浮點數到磁盤的一個跨平臺的方式,查找我的GitHub項目
https://github.com/MalcolmMcLean/ieee754
我也把功能便攜讀取二進制整數,因爲它是稍微有點複雜比一見還難。
如果你想測試的內存格式,您需要創建具有一定的戰略價值浮動,然後查詢位模式。零應該都是零位和特殊情況,除非你在怪異和美妙的硬件上。 1和-1應該相差一位,這是你的符號位。 2和1應該在指數上有所不同,兩者的測試能力應該告訴你指數位和它們什麼時候用完。爲速度測試兩個冪的權力。
然後,可以通過存儲1關閉的2的冪得到的尾數,e.g 3,7等。
通過探測它,你可以建立一個內存模式,但它幾乎總是IEEE 754
代碼的許可證是什麼? –
免費用於任何用途。這樣的數學例程不能申請專利。 –
我的意思是符號,指數和分數的位數。
您可以使用std::numeric_limits<T>::digits
獲取尾數位std::numeric_limits<T>::is_signed
以獲取符號位。
你和扣除它們的和猜測的指數位,但如果某類型的填充,這可能是不正確的。例如,這是典型的long double
。
查找float類型的存儲格式
當然,不僅是物質的位數,而且順序。這些功能對你沒有幫助。他們也假設std::numeric_limits<T>::radix == 2
。
對於確切的格式,您將不得不查閱cpu架構的手冊。
我想保存浮點數到硬盤,不知道是否有使文件跨平臺的好方法。
最典型的解決方案是保存到磁盤時,浮點轉換爲文本表示:0x1.8p+0
。它不是最高效的,但它是可移植的(但是,您必須確定將使用什麼字符編碼文件,如果這不是本機系統,則需要進行轉換)。
- 1. 浮點格式
- 2. 格式化不同類型的浮點數的與蟒
- 3. Intl格式化大型浮點數
- 4. 格式浮點數
- 5. 浮點數格式
- 6. 浮點類型的限制?
- 7. 帶浮點數的格式
- 8. 的Javascript格式浮點數
- 9. 在內核中查找未知類型內存的大小
- 10. 浮點格式的小數點
- 11. 浮點變量格式
- 12. C++浮點格式化
- 13. 格式化浮點值
- 14. 浮點精度格式
- 15. 浮點數格式問題
- 16. TCL格式化浮點
- 17. 格式化浮點數
- 18. 如何將短浮點類型轉換爲短類型並在短類型溢出時截斷浮點類型?
- 19. 在混合類型的嵌套元組中打印格式化的浮點數
- 20. MySql排序浮點型數據類型
- 21. 查找字符串中的浮點數
- 22. pandas to_csv:如何在混合類型的列中格式化浮點數
- 23. lldb - 如何使用「類型格式添加」顯示帶小數的浮點數
- 24. 如何將格式化的字符串轉換爲浮點型?
- 25. 需要一套浮點型變量的格式化,以00.00
- 26. 檢查的OpenCV的Matrix是浮點部件類型
- 27. ATMega8中的浮點類型值
- 28. 浮點類型的有效位數
- 29. 替換PHP的浮點數據類型
- 30. 關於浮點類型的問題
格式爲'float'和'double'是*通常* IEEE-754但這不能保證。你可以檢查它是否使用['std :: numeric_limits :: is_iec559'](http://en.cppreference.com/w/cpp/types/numeric_limits/is_iec559)。 'std :: numeric_limits'將允許你檢查你的類型的許多屬性,但是這不包括確切的內存佈局。 –
這應該由您的實施記錄。 – NathanOliver
您是否嘗試過使用Google浮點內存格式?這些類型直接由CPU支持並遵循特定標準。 Google的第一個結果是[雙精度浮點格式](https://en.wikipedia.org/wiki/Double-precision_floating-point_format)。如果CPU不符合IEEE 754標準,則應檢查CPU的文檔。 –