浮点数在比 IEEE 754 更小的 c++ 范围内
Float in c++ smaller range than IEEE 754
我尝试进行以下除法:1/16777216
,什么等于5.96046448e-8
但是这个:
printf("number: %f n", 1.0f / 16777216.0f);
Allways给了我0.00000
而不是我期望的答案。我查了一下范围,因为我想得很好,这可能是一个问题,漂浮只是为了来处理这样的数字,但 IEEE 754 声明它是±1.18×10−38
.
我错过了什么,这就是为什么结果不是预期的吗?
当使用固定格式(%f
)时,你会得到一个小数点和最多6位数字的格式。由于您使用的值舍入为小于0.000001
的值,因此打印0.000000
似乎是合理的。您可以使用更多数字(我认为使用%.10f
但我不太擅长<stdio.h>
格式说明符),或者您将格式更改为使用科学记数法(%e
)或两个选项中的"更好"(%g
)。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- 错误:未在此范围内声明'reverse'
- 并行用于C++17中数组索引范围内的循环
- 求出有多少个数字是完美平方,而sqrt()是L,R范围内的素数
- 不计算一个范围内的完美数
- 错误:"imread"未在此范围内声明
- 我在范围内未声明的错误类有问题
- 如何在cpp中使用地图显示给定日期范围内(在下面的问题中)的费率?
- 我有一个数组,我想输入一个范围,然后找到范围内所有偶数的总和?
- 未在此范围内声明错误 'xy'
- 在C++中使用变量而不是"#define"来指定数组大小是不是一种糟糕的做法?(C错误:在文件范围内
- 命名空间范围内的外部 - GCC vs clang vs msvc
- 如何改进一堆在已知值范围内评估变量的 else-if 条件?
- 如何仅使用 While 循环在给定范围内找到可被 7 整除的计数整数
- Socklen_t未在此范围内声明
- 错误:'[' 之前预期的非限定 id 和错误:'users'未在此范围内声明
- 查找给定范围内最长连续 1 的频率
- "Main"已在当前范围内声明
- c++ 变量在宏的扩展中没有在这个范围内声明
- 变量不在 lambda 的范围内