是否有标准的方法来确定C或C ++中双精度数的宽度?我知道IEEE-754的double格式以53位存储有效数字,但是我想避免在代码中使用“魔术”数字。
在Linux上,该文件usr/include/ieee754.h存在,但是它使用结构中的位字段描述了格式,我无法确定其大小(在编译时)。
仅Linux解决方案是可以接受的。
使用FLT_MANT_DIG和DBL_MANT_DIG,定义于<float.h>:
#include <float.h>
#include <stdio.h>
#if FLT_RADIX != 2
#error "Floating-point base is not two."
#endif
int main(void)
{
printf("There are %d bits in the significand of a float.\n",
FLT_MANT_DIG);
printf("There are %d bits in the significand of a double.\n",
DBL_MANT_DIG);
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。