数据类型说明 实型
1 實型常量的表示方法
實數又稱浮點數,實數有兩種表示形式。
(1)十進制小數形式,它由數字和小數點組成(注意必須有小數點)
如:.123(0.123), 123.(123.0)
(2)指數形式
如:123e3或123E3都代表123*10^3,但注意字母e或E之前必須有數字,且e后面的指數必須為整數。
2 實型變量
2.1 實型數據在內存中的存放形式
一個實數數據一般在內存中占4個字節(32位)與整型數據的存儲方式不同,實型數據是按指數形式存儲的,系統把一個實型數據分成小數部分與指數部分,分別存放。指數部分采用規范化的指數形式。
如:3.14159 的存放形式如下
+ .314159 1
第一部分符號‘+’表示符號 +
第二部分 .314159 表示小數部分
第三部分 1 表示指數 10^1
實際上在計算機中是用二進制數來表示小數部分以及用2的冪次來表示指數部分
在4個字節(32位)中,究竟用多少位表示小數部分,多少位來表示指數部分,標準C并無具體規定,由各C編譯系統自定,不少C編譯系統以24位表示小數部分(包括符號)以8位表示指數部分(包括指數的符號)小數部分占的位數越多,數的有效數字就越多精度就越高,指數部分占的位數越多,剛能表示的數值范圍越大。
2.2 實型變量的分類
C實型變量可分為:
單精度(float) 32位 有效數字 6~7位 數值范圍 10^-37 ~ 10^38
雙精度(double)64位 有效數字 15 ~16位 數值范圍 10^-307 ~ 10^308
長雙精度型(long double)128位 有效數字 18 ~ 19 位 數值范圍 10^-4931 ~10^4932
2.3 實型數據的舍入誤差
由于實型變量是用有限的存儲單元存儲的,因此能提供的有效數字總是有限的,在有效位以外的數字將被舍去,由此可能會產生一些誤差。
看下面的程序
#include <stdio.h>
void main()
{
float a, b;
a = 123456.789e5;
b = a + 20;
printf("%f\n", b);
}
運行的結果是 12345678848.000000
不是想像是 12345678920
可以看到前8位是準確的,后幾位不是準確的
總結
- 上一篇: 战略支援部队航海技术助理工程师是干什么的
- 下一篇: 想问下给长辈买新年的礼物上哪买好?