浮点数
简介
浮点数是计算机内部使用科学记数法表示高范围实数的一种表示方法。相对于整形数表示法,浮点数可以表示数更大的范围,但是拥有更低的精度。
浮点数的数值范围
类型 | 比特数 | 有效数字 | 数值范围 |
---|---|---|---|
float | 32 | 6-7 | -3.410(-38)~3.410(38) |
double | 64 | 15-16 | -1.710(-308)~1.710(308) |
long double | 128 | 18-19 | -1.210(-4932)~1.210(4932) |
表示方法
类型 | 符号位 | 指数 | 尾数 | |
---|---|---|---|---|
float | 1位(第31位) | 8位(第23~30位) | 23位(第0~22位) | |
double | 1位(第63位) | 11位(第52~62位) | 52位(第0~51位) | |
long double |
浮点数转换到内存中存储的步骤分为如下三步:
- 将浮点数转换成二进制
- 用科学计数法表示二进制浮点数
- 计算指数偏移后的值
- 计算指数时需要加上偏移量,偏移量的值与浮点数的类型有关( float 偏移量值为 127 ,double 偏移量值为 1023);
实例
浮点数19.625用float是如何存储的:
- 将浮点数转换成二进制:10011.101(将 19.625 整数部分采用除 2 取余,小数部分采用乘 2 取整法);
- 用科学计数法表示二进制浮点数:
1.0011101*2^4
; - 计算指数偏移后的值:127 + 4 = 131 (10000011);
- 拼接综上所述,float 类型的 19.625 在内存中的值为:0 - 10000011 - 001 1101 0000 0000 0000 0000。