一、實戰演練:
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();
輸出結果:
二、那我來問大家一個問題
??Double和float都是存小數的,爲什麼還要分兩個,一個不就行了,那它們兩個有哪些區別?
我們先來看個實例:
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