国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C語言菜鳥基礎教程之單精度浮點數與雙精度浮點數

2020-05-23 13:44:17
字體:
來源:轉載
供稿:網友

上節課 簡單介紹了浮點數。計算機程序中的浮點數分為單精度浮點數和雙精度浮點數。

單精度和雙精度精確的范圍不一樣。

計算機里的最基本的存儲單位用位(bit)來表示。bit只能用來存儲0或1。
稍大一點的單位是字節(Byte,簡寫為B)。
再大一級的是千字節(kilo Bytes),用k來表示。
再大一級的單位是兆字節(Mega Bytes),用M來表示。一張照片的大小通常為1~3M。
再大一級的單位為G。一部高清電影的大小通常為1~2G。
再大一級的單位為T。

換算關系為:

1B = 8bit
1k = 1024B = 2^10 B
1M = 1024k = 2^20 B
1G = 1024M = 2^30 B
1T = 1024G = 2^40 B

單精度(float)在計算機中存儲占用4字節,32位,有效位數為7位(6位小數+小數點)。
雙精度(double)在計算機中存儲占用8字節,64位,有效位數為16位(15位小數+小數點)。
不管是float還是double,在計算機中的存儲都遵循IEEE規范,使用二進制科學計數法,都包含三個部分:符號位、指數位和尾數部分。其中float的符號位、指數位(即整數部分)、尾數部分分別為1, 8, 23。雙精度則分別為1, 11, 52。

C語言,單精度浮點數,雙精度浮點數

float

C語言,單精度浮點數,雙精度浮點數

double

精度主要取決于尾數部分的位數,float為23位,最小為2的-23次方,約等于1.19乘以10的-7次方,所以float小數部分只能精確到后面6位,加上小數點算做一位,即有效數字為7位。
類似,double 尾數部分52位,最小為2的-52次方,約為2.22乘以10的-16次方,所以精確到小數點后15位,有效位數為16位。

程序驗證:

#include <stdio.h>int main(){  float a = 1.123456789;  printf("a = %20.9f/n", a);    double b = 2.123456789;  printf("b = %20.9f/n", b);    return 0;}

注意:這里%20.9f表示浮點數總共有20位,其中小數占9位。不足20位的部分,左側用空格來填充。

運行結果:

a =     1.123456836b =     2.123456789

從運行結果可以看出,單精度浮點數小數部分只有前6位是準確的,后三位是不準確的。雙精度小數部分9位都是準確的。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 香河县| 太白县| 伽师县| 达孜县| 黄龙县| 兴城市| 梨树县| 信丰县| 巍山| 呼图壁县| 武功县| 那坡县| 安义县| 榆树市| 重庆市| 大姚县| 上高县| 神木县| 嘉鱼县| 当雄县| 石景山区| 大悟县| 潞西市| 灵台县| 南陵县| 清水河县| 仙居县| 宿松县| 阜平县| 岑巩县| 南汇区| 玛沁县| 瑞丽市| 沁水县| 台山市| 康平县| 邯郸市| 霍城县| 霍城县| 白玉县| 乐安县|