繁体   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