浮点数在比 IEEE 754 更小的 c++ 范围内

Float in c++ smaller range than IEEE 754

本文关键字:c++ 范围内 IEEE 浮点数      更新时间:2023-10-16

我尝试进行以下除法: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)。