浮点数
大约 2 分钟
浮点数
使用浮点数直接使用 double 即可
浮点数字面值表示方法
- 小数形式:0.123
- 指数形式:3e-3(为3 * 10-3 ,即0.003)
注意:
#include <stdio.h>
//#define PI 3.14
//#define PI 0.314E1
//#define PI 0.314e1
#define PI 31.4e-1
//#define PI 31.4E0.5 e后面只能写整数
int main() {
printf("PI = %f\n",PI);
}
浮点数的存储方式

浮点型数据是按照指数形式存储的。 系统把一个浮点型数据分成小数部分和指数部分, 分别存放。指数部分采用规范化的指数形式, 指数也分正负 。
float存储为例(4byte = 32bit):
- 1 位的符号位, 是 0 就代表正数, 1 就代表负数
- 8位阶码,
- 23位的小数部分, 是通过 2-1+2-2+2-3等去近似一个小数的
double的阶码为11位


**加数 与 加数相差很大 **,会发生精度丢失

我们赋给 a 的值为 1.23456789e10, 加20 后, 应该得到的值为 1.234567892e10, 但是却是 1.23456788e10, 变的更小了, 我们把这种现象称为精度丢失, 原因就是 float 能够表示的有效数字为 7 位, 最多只保证 1.234567e10 的正确性, 如果要达到正确, 我们需要把 a 和 b 均改为 double 类型。
