1. 介绍浮点型与科学计数法的关系,例如 float,4个字节32位分割成8,23,1,组成了浮点型
12369 = 1.2369e4,1是隐含位,默认存在,由1位进行表示;4是指数位,可以由8位进行表示,范围是(-127~128);2369是尾数位,可由23位进行表示
2. 注意他们的精度位数,一般float 6位有效数字,7,8位可能不准,double是15-16位有效数字
#include <stdio.h>
int main() {
float a_float = 3.14f; // 需要保持6位有效数字, 数值范围在 (+-)10^-37 ~ 10^37
printf("size of float: %d\n", sizeof(float)); // 具体占的字节大小由编译器决定,此处占4个字节
double a_double = 3.14; // 15~16位有效数字
printf("size of double: %d\n", sizeof(double)); // 8个字节
float lat = 39.90815f;
printf("%f", 39.908156f - lat); // 0.000008,前7位精准的
float money = 3.14f; // error, never use float or double to describe money
return 0;
}
提问:为什么指数位范围是(-127~128) ?尾数位23位如何理解,精度又是如何设置的?
指数位使用的是移码,具体待查。