帶你看看C#中的數據類型(float和double的區別)

 

                   

 

一、實戰演練:

int number1 = 12;    //存儲一個整數類型的變量

double number2 = 1.11111111111111111111;     //double:存儲64 位雙精度浮點型數據(存小數時電腦默認)

float number3 = (float)1.11111111111111111111;   //存儲32位單精度浮點型數據(使用時需先進行轉換:0.1f或(flost)0.1)

char number4 = 'a';         //存儲字符數據,‘a’

string number5 = "123";     //存儲字符串數據,“abc“

Console.WriteLine(number1);

Console.WriteLine(number2);

Console.WriteLine(number3);

Console.WriteLine(number4);

Console.WriteLine(number5);

Console.ReadKey(); 

輸出結果:

           


 

二、那我來問大家一個問題

??Doublefloat都是存小數的,爲什麼還要分兩個,一個不就行了,那它們兩個有哪些區別?

我們先來看個實例:

double number2 = 1.11111111111111111111;

float number3 = (float) 1.11111111111111111111;

Console.WriteLine(number2);

Console.WriteLine(number3);

Console.ReadKey(); 

輸出結果:

            

 

根據double和float的取值範圍:

double 64 位雙精度浮點型 (+/-)5.0 x 10-324 到 (+/-)1.7 x 10308
float 32 位單精度浮點型 -3.4 x 1038 到 + 3.4 x 1038

 

它們用圖表示就是這樣的:

                                

double比float存儲的數值範圍更大


 

三、??提問

問題1:給兩個變量賦值的時候不是明明有很長的一大串數字嗎?爲什麼輸出的結果卻只有這幾位呢?

問題2:聲明的number3是單精度浮點型數據,爲什麼後面賦值的時候還要寫(float)呢?它的作用是什麼?不要不行嗎?

 

四、解決

問題1

通過聲明時的代碼和輸出的結果我們可以發現:

給聲明的number2賦值時,小數點後有20位數,輸出的結果卻只有16位數

給聲明的number3賦值時,小數點後有20位數,輸出的結果卻只有7位數

實際上,在C#中,

  • double爲雙精度,在計算機內是佔4個字節的,能存儲的有效位數爲16
  • folat爲單精度,在計算機內是佔8個字節,能存儲的有效位數是7

 

問題2

我們來看一下在VS2019中,代碼是什麼樣的

系統會報一個紅色的錯誤提示:“無法將Double類型隱式轉換爲“float”類型;請使用“F”後綴創建此類型。

說的是什麼意思呢?

C#中,

當聲明精度型的變量時,系統會自動默認這個小數爲double類型的數值,所以在上圖中我們聲明的這個number3變量現在看着是float數據類型的數值,但實際上它是一個double類型的數值,要想將這個double類型轉換爲float類型,就需要在這個float數值的後面加上“F”或在小數前面加上(float)。如下圖

float number3 = (float)1.11111111111111111111;

 

float number3 = 1.11111111111111111111F;

 

總結

在C#中,double比float的表示範圍更大;

當聲明小數的精度類型數值時,系統會自動默認爲double類型;

聲明float類型數值時,需要在小數前面加(float)或在小數後面加F

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章