![]() |
c語言數值資料大小的問題
請問一下先進,既然 unsigned long 和 float 都是用占用 4 byte 的長度,為何二者能表示的數值差那麼多?
unsigned long 只能表示到 4294967295,float 則可以表達到 +-3.4e38,亦即是正負339999995214436424907732413799364296704.000000 ? |
簡單的回答
整數是直接儲存數值 浮點是儲存表示式,而不是實際的數值 浮點表示的是近似值 |
引用:
|
引用:
1bit 正負號 8bit 指數(次方) 23bit 尾數(小數點後面的數字) 64位元 1bit 正負號 11bit 指數(次方) 52bit 尾數(小數點後面的數字) 因為浮點是使用表示式儲存,所以計算方式也不同。浮點運算能力就是評定 CPU 運算能力很重要的一環。 很久很久以前為了報恩,曾利用浮點運算幹了些換式。 沒錢的時候某特定廠商提供免費的機器,所以後來申請到預算後,為了讓這家廠商得標,就採用技術標,誰的運算能力強就買誰的。這家的乘法運算比除法強,所以全面改寫程式碼,例如除以2,全部改寫成 乘以0.5~cici |
引用:
|
unsigned long4字节 数字是精确的 例如 long a=1123310766
float4字节 仅仅精确7位数字 float b=1.23456789 理论上 前7位数字是准确的 实际上 可能只能精确5-6位 # include "stdio.h" main(){ float b[4]; b[0]=4.0; b[1]=4.1; b[2]=4.2; b[3]=4.3; for(int i=0;i<4;i++) if (b[i]>=4.1) printf("%f ",b[i]); } 这是float常见的笑话,它的数值实际是不精确的。 |
所有時間均為 +8。現在的時間是 06:17 PM。 |
Powered by vBulletin® 版本 3.8.4
版權所有 ©2000 - 2025,Jelsoft Enterprises Ltd.