float 与double 都是浮点数,浮点数有两种表示形式:
(1)十进制小数形式。例如:0.123,123.0,等,注意:必须有小数点。
(2)指数形式。如123e3或123E3都代表123*10^3。注意e或E之前必须有数字,而且e后面的指数必须为整数。
一个浮点数有多种指数表示形式,例如123.456:123.456e0,12.3456e1,1.23456e2等,其中1.23456e2成为"规范化的指数形式"。
即在字母e之前的小数部分中,小数点左边有一位且仅有一位非零的数字。
浮点型数据在内存中的存放形式:
浮点型数据在内存中是按照指数形式存储的,系统把一个浮点型数据分成小数部分和指数部分,分别存放。指数部分采用规范化的指数形式。
实数3.14159在内存中的存放形式:
+ | .314159 | 1 |
这里方便理解使用十进制表示,实际上计算机是用二进制数来表示小数部分以及用2的幂次来表示指数部分的。
小数部分占得位(bit)越多,数的有效数字越多,精度越高。指数部分占得位数越多,则表示的数值范围越大。
浮点型变量 分为:float , double 和 long double
类型 | 比特(位)数 | 有效数字 | 数值范围 |
float | 32(4字节) | 6~7 | -[3.4*10^(-38)]~3.4*10^38 |
double | 64 | 15~16 | -[1.7*10^(-308)]~1.7*10^308 |
long double | 128 | 18~19 | -[1.2*10^(-4932)]~1.2*10^4932 |
类型 | 比特(位)数 | 有效数字 | 数值范围 |
float | 32(4字节) | 6~7 | -[3.4*10^(-38)]~3.4*10^38 |
double | 64 | 15~16 | -[1.7*10^(-308)]~1.7*10^308 |
long double | 128 | 18~19 | -[1.2*10^(-4932)]~1.2*10^4932 |