浮点数比c ++小于IEEE 754

时间:2015-01-04 21:03:56

标签: c++ floating-point ieee-754

我尝试进行以下划分:1/16777216,等于5.96046448e-8 但是这个:

printf("number: %f \n", 1.0f / 16777216.0f);      

总是给我0.00000而不是我期望的答案。 我查了一下范围,因为我认为,这可能是一个问题,浮动只是为了小 处理这样的数字,但IEEE 754表示它是±1.18×10−38

我错过了什么,这就是为什么结果不是预期的结果?

1 个答案:

答案 0 :(得分:9)

使用固定格式(%f)时,您将获得一个带小数点且最多6位数的格式。由于您使用的值会舍入到小于0.000001的值,因此打印0.000000似乎是合理的。您可以使用更多数字(我使用%.10f,但我对<stdio.h>格式说明符不太好)或者您更改格式以使用科学记数法({ {1}})或两个选项中的“更好”(%e)。