对于精度要求较高的开发场景,C中的浮点数精度问题需要特别注意。对于有很多经验的开发者而言,可能只知道C语言的float精度在6-7位之间,为什么是7?为什么又是6-7?网上的文章大部分一大抄,而且很多也不准确。本人今天翻出了计算机组成原理考研指导,重新看了一遍IEEE754标准,现将此疑问整理如下:
在C语言中,浮点数的存储遵循IEEE754标准。float和double如下:
格式 | 位数(bit) | 数符(bit)S | 阶码(bit)E | 尾数(bit)M | 备注 |
float | 32 | 1 | 8 | 23 | 阶码范围:1~254 |
double | 64 |