C# 數(shù)字類型(Number)

通常,數(shù)字可以分為兩種類型:整數(shù)類型 和 浮點類型。

整數(shù)類型數(shù)字是不帶小數(shù)點的整數(shù)。它可以是負(fù)數(shù)或正數(shù)。

浮點類型是具有一個或多個小數(shù)點的數(shù)字。它可以是負(fù)數(shù)或正數(shù)。

C#根據(jù)它們在內(nèi)存中的大小和存儲數(shù)字的能力,為整數(shù)類型和浮點類型包括不同的數(shù)據(jù)類型。

下圖說明了C#中的數(shù)字類型。

數(shù)值類型

整數(shù)類型

整數(shù)類型數(shù)字是帶小數(shù)點的正或負(fù)整數(shù)。C#包括四種用于整數(shù)的數(shù)據(jù)類型:字節(jié),短整數(shù),整數(shù)和長整數(shù)(byte, short, int, long)。

byte

字節(jié)數(shù)據(jù)類型存儲從0到255的數(shù)字。它在內(nèi)存中占據(jù)8位。byte關(guān)鍵字是.NET中Byte結(jié)構(gòu)的別名。

sbyte與byte相同,但是它可以存儲-128到127之間的負(fù)數(shù)。sbyte關(guān)鍵字是.NET中SByte結(jié)構(gòu)的別名。

byte b1 = 255;
byte b2 = -128;// 編譯時錯誤:常量值“ -128”不能轉(zhuǎn)換為“字節(jié)”
sbyte sb1 = -128; 
sbyte sb2 = 127; 

Console.WriteLine(Byte.MaxValue);//255
Console.WriteLine(Byte.MinValue);//0
Console.WriteLine(SByte.MaxValue);//127
Console.WriteLine(SByte.MinValue);//-128

short

short數(shù)據(jù)類型是一個有符號整數(shù),可以存儲-32,768到32,767之間的數(shù)字。它占用16位內(nèi)存。short關(guān)鍵字是.NET中Int16結(jié)構(gòu)的別名。

ushort數(shù)據(jù)類型是無符號整數(shù)。它只能存儲0到65535之間的正數(shù)。ushort關(guān)鍵字是.NET中UInt16結(jié)構(gòu)的別名。

short s1 = -32768;
short s2 = 32767;
short s3 = 35000;//編譯時錯誤:常量值“ 35000”不能轉(zhuǎn)換為“ short”

ushort us1 = 65535;
ushort us2 = -32000; //編譯時錯誤:常量值“ -32000”不能轉(zhuǎn)換為“ ushort”

Console.WriteLine(Int16.MaxValue);//32767
Console.WriteLine(Int16.MinValue);//-32768
Console.WriteLine(UInt16.MaxValue);//65535
Console.WriteLine(UInt16.MinValue);//0

int

int數(shù)據(jù)類型是32位有符號整數(shù)。它可以存儲從-2,147,483,648到2,147,483,647的數(shù)字。int關(guān)鍵字是.NET中Int32結(jié)構(gòu)的別名。

uint是32位無符號整數(shù)。uint關(guān)鍵字是.NET中UInt32結(jié)構(gòu)的別名。它可以存儲從0到4,294,967,295的正數(shù)。(可選)在數(shù)字后使用U或u后綴將其分配給uint變量。

int i = -2147483648;
int j = 2147483647;
int k = 4294967295; //編譯時錯誤:無法將類型'uint'隱式轉(zhuǎn)換為'int'。

uint ui1 = 4294967295;
uint ui2 =-1; //編譯時錯誤:常量值“ -1”不能轉(zhuǎn)換為“ uint”

Console.WriteLine(Int32.MaxValue);//2147483647
Console.WriteLine(Int32.MinValue);//-2147483648
Console.WriteLine(UInt32.MaxValue);//4294967295
Console.WriteLine(UInt32.MinValue);//0

int數(shù)據(jù)類型也用于十六進制和二進制數(shù)。十六進制數(shù)字以0x或0X前綴開頭。從C#7.2開始,二進制數(shù)以0b或0B開頭。

int hex = 0x2F;
int binary = 0b_0010_1111;

Console.WriteLine(hex);
Console.WriteLine(binary);

long

long類型是64位有符號整數(shù)。它可以存儲從-9,223,372,036,854,775,808到9,223,372,036,854,775,807的數(shù)字。使用帶有數(shù)字的l或L后綴將其分配給long類型變量。long關(guān)鍵字是.NET中Int64結(jié)構(gòu)的別名。

ulong類型存儲從0到18,446,744,073,709,551,615的正數(shù)。如果數(shù)字后綴為UL,Ul,uL,ul,LU,Lu,lU或lu,則其類型為ulong。uint關(guān)鍵字是.NET中UInt64結(jié)構(gòu)的別名。

long l1 = -9223372036854775808;
long l2 = 9223372036854775807;

ulong ul1 = 18223372036854775808ul;
ulong ul2 = 18223372036854775808UL;

Console.WriteLine(Int64.MaxValue);//9223372036854775807
Console.WriteLine(Int64.MinValue);//-9223372036854775808
Console.WriteLine(UInt64.MaxValue);//18446744073709551615
Console.WriteLine(UInt64.MinValue);//0

浮點類型

浮點數(shù)是帶一個或多個小數(shù)點的正數(shù)或負(fù)數(shù)。C#包括三種浮點數(shù)數(shù)據(jù)類型:浮點數(shù),雙精度數(shù) 和 小數(shù)(float, double, decimal)。

float

float數(shù)據(jù)類型可以存儲從3.4ee038到3.4e + 038的分?jǐn)?shù)。它在內(nèi)存中占用4個字節(jié)。float關(guān)鍵字是.NET中Single結(jié)構(gòu)的別名。

使用帶有文字的 f 或 F 后綴使其成為浮點型。

float f1 = 123456.5F;
float f2 = 1.123456f;

Console.WriteLine(f1);//123456.5
Console.WriteLine(f2);//1.123456

double

double數(shù)據(jù)類型可以存儲從1.7e?308到1.7e + 308的小數(shù)。它在內(nèi)存中占用8個字節(jié)。double關(guān)鍵字是.NET中Double結(jié)構(gòu)的別名。

使用帶文字的 d 或 D 后綴使其成為雙精度型。

double d1 = 12345678912345.5d;
double d2 = 1.123456789123456d;

Console.WriteLine(d1);//12345678912345.5
Console.WriteLine(d2);//1.123456789123456

decimal

decimal 數(shù)據(jù)類型可以存儲從±1.0 x 10-28到±7.9228 x 1028的小數(shù)。它在內(nèi)存中占據(jù)16個字節(jié)。decimal 是.NET中Decimal結(jié)構(gòu)的關(guān)鍵字別名。

decimal 類型比浮點和雙精度類型具有更高的精度和更小的范圍,因此適用于財務(wù)和貨幣計算。

使用帶有文字的 m 或 M 后綴使其成為 decimal 類型。

decimal d1 = 123456789123456789123456789.5m;
decimal d2 = 1.1234567891345679123456789123m;

Console.WriteLine(d1);
Console.WriteLine(d2);

科學(xué)計數(shù)法

使用 e 或E 表示10的冪,作為科學(xué)記數(shù)法的指數(shù)部分,使用浮點數(shù)、雙精度數(shù)或小數(shù)。

double d = 0.12e2;
Console.WriteLine(d);  // 12;

float f = 123.45e-2f;
Console.WriteLine(f);  // 1.2345

decimal m = 1.2e6m;
Console.WriteLine(m);// 1200000
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清