我尝试进行以下划分:1/16777216
,等于5.96046448e-8
但是这个:
printf("number: %f \n", 1.0f / 16777216.0f);
总是给我0.00000
而不是我期望的答案。
我查了一下范围,因为我认为,这可能是一个问题,浮动只是为了小
处理这样的数字,但IEEE 754表示它是±1.18×10−38
。
我错过了什么,这就是为什么结果不是预期的结果?
答案 0 :(得分:9)
使用固定格式(%f
)时,您将获得一个带小数点且最多6位数的格式。由于您使用的值会舍入到小于0.000001
的值,因此打印0.000000
似乎是合理的。您可以使用更多数字(我想使用%.10f
,但我对<stdio.h>
格式说明符不太好)或者您更改格式以使用科学记数法({ {1}})或两个选项中的“更好”(%e
)。