簡體   English   中英

如何在C ++中同時具有32位和64位浮點數

[英]How to have both 32bit and 64bit float in C++

我有一個文件規范(在這里: http : //www.septentrio.com/secure/asterx1v_2_1/SBF%20Reference%20Guide.pdf ),其中的字段標記為32位和64位浮點數(請參見第8頁)。 如何在程序中同時使用兩種寬度? 我現在正在Mac OSX上進行開發,但是我還將在Linux機器上進行部署。

更多細節:

我知道我可以告訴編譯器寬度,但是如何區分兩個不同的浮點寬度呢? 也許有人對我解析的方式提出了建議,那就是reinterpret_cast(buffer + offset)然后使用這些值。 這些文件大小很大(4GB),因此我需要性能。

盡管如此,這似乎很明顯:

在Intel平台和其他平台上, float是32位浮點值,而double是64位浮點值。 試試這種方法。 最有可能的。

要絕對確保在程序開始時或在編譯過程中(如果編譯器允許)靜態檢查類型的sizeof。

再一次,請首先嘗試簡單的解決方案。

浮點運算和雙重運算都在Intel上實現,並且速度很快。 無論如何,本機算術是您從CPU中獲得最快的算術。

IEEE 754( http://en.wikipedia.org/wiki/IEEE_floating_point )定義的不是一種浮點格式,而是幾種,如4、8、16字節等。它們都具有不同的范圍和精度,但是它們仍然是IEEE值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM