浮点数不考虑精度的情况下到底能表达多少位小数点?我读出了1022位
我用的gcc -std=c99 编译的
第一:我发现c99下读取浮点能读取超过17位的数据,非c99是读取不了这么多的
第二:一直迷惑ieee754到底说没说 最多能放下多少位小数点,
double a=0.1;
我打印输出内存中的数据是:0.1000000000000000055511151231257827021181583404541015625
也就这么多位了 在增加宽度 后面的就都显示0了。我以为这就很长了,但我刚才测试了下float.h中的DBL_MAX和DBL_MIN
先说DBL_MIN我测试了好几次 直到打印宽度1022才算输出完,能有这么多?double就8字节能装下了?
我在国外的一个网站也看到了一个人说 DBL_MIN有1022位 他也是gcc编译的 是在ubuntu下
You can also see that DBL_MIN, the smallest positive normalized double value, has 1022 digits in the fractional part and of those there are 715 significant digits.
先别说什么有意义无意义 这个值我试过 单独赋值给一个新的double变量 再去读取 还能准确完整读取的。
只要能精确存储的浮点小数 都能精确读取,能精确读取存放的原数据就是有意义
我的疑问是:
1.为什么gcc 下使用c99编译 能读取浮点这么多位,c99对浮点操作方面 是有啥改变的吗?不用c99就读取不了这么多位。
2.不考虑有效精度,浮点数到底能表示多少位小数?