小數在c#中需要用浮點型表示,浮點值就是.後面的小數點。c#語言中有兩種小數型別,分別為32位單精度浮點型(float)和64位雙精度浮點型(double)。其中精度指的是小數字數,小數字數越多,精度越高。由名稱可知,float型別的精度比double型的低,由位數可知,float型別的範圍比double型別小。 float型別中小數字數為7位,即可精確到小數點後7位,表示範圍為1.5e - 45~ 3.4e + 38。對於乙個小數其預設型別為double型,如果需要指定為float型,需要在小數後面新增f或f字尾。
1. 範圍
float和double的範圍是由指數的位數來決定的。
float的指數字有8位,而double的指數字有11位,分布如下:
float:
1bit(符號位) 8bits(指數字) 23bits(尾數字)
double:
1bit(符號位) 11bits(指數字) 52bits(尾數字)
於是,float的指數範圍為-127~+128,而double的指數範圍為-1023~+1024,並且指數字是按補碼的形式來劃分的。
其中負指數決定了浮點數所能表達的絕對值最小的非零數;而正指數決定了浮點數所能表達的絕對值最大的數,也即決定了浮點數的取值範圍。
float的範圍為-2^128 ~ +2^128,也即-3.40e+38 ~ +3.40e+38;double的範圍為-2^1024 ~ +2^1024,也即-1.79e+308 ~ +1.79e+308。
2. 精度
float和double的精度是由尾數的位數來決定的。浮點數在記憶體中是按科學計數法來儲存的,其整數部分始終是乙個隱含著的「1」,由於它是不變的,故不能對精度造成影響。
float:2^23 = 8388608,一共七位,這意味著最多能有7位有效數字,但絕對能保證的為6位,也即float的精度為6~7位有效數字;
double:2^52 = 4503599627370496,一共16位,同理,double的精度為15~16位。
float 型別的儲存
首先,看一段 int main if d f 這個程式的輸出結果是 hello world 然後你有沒有產生了好奇?這是為啥,下面我就來具體講一講float在記憶體中的儲存方式 目前所有的計算機都支援乙個被稱為ieee浮點的標準.題外話 電器氣和電子工程師協會 ieee 是乙個包括所有電子和計算機技...
float型別解析
浮點型變數在計算機記憶體中占用4位元組 byte 即32 bit。遵循ieee 754格式標準。乙個浮點數由2部分組成 底數m 和 指數e。mantissa 2exponent 注意,公式中的mantissa 和 exponent使用二進位制表示 底數部分 使用 進製數來表示此浮點數的實際值。指數部...
float型別,bool型別的比較
1 float 和 0 比較 if x 0.000001 x 0.000001 因為float是6位精度的,double是10位,long double 也是10位 這也是一些大眾的答案,但是還是有些疑問,沒辦法,我菜.苦於沒找到相關的說明.做了下面的例子,沒找到對應的結果,猜測一下,或者是比較中有...