如何在C 中同时将32位和64位漂浮

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

本文关键字:32位 64位 漂浮      更新时间:2023-10-16

i有一个文件规格(这里:http://www.septentrio.com/secure/secure/asterx1v_2_1/sbf Reference Guide.pdf),具有标记为32位的字段和64位浮子(请参阅第8页)。如何在程序中使用两个宽度?我现在正在Mac OSX上开发,但也将在Linux机器上部署。

更多详细信息:

我知道我可以告诉编译器宽度,但是我如何区分两个不同的浮子宽度?也许有人也有一个建议改变我解析的方式,即重新interpret_cast(buffer offset),然后使用这些值。这些文件大小很大(4GB),所以我需要性能。

这似乎很明显,但是:

在英特尔平台上,许多其他float是32位浮点值,double为64位浮点值。尝试这种方法。

很可能会起作用。

如果您的编译器允许,请确保在程序开始时或在编译过程中静态检查类型的大小。

再次尝试简单的解决方案。

float和double算术都在英特尔上实现,并且很快。无论如何,本地算术是您可以从CPU获得的最快的。

ieee 754(http://en.wikipedia.org/wiki/ieee_floating_point)定义不是一种浮点格式,而是几个,例如4、8、16字节等。它们都有不同的范围和精度所有仍然是IEEE值。