C#三学教程 - 数字类型

C#数字类型

C#具有下表中显示的预定义数字类型。

有符号整数

C#类型 系统类型 后缀 大小 范围
sbyte SByte 无后缀 8位 -27 2-1
short Int16 无后缀 16位 -215 至215 -1
int Int32 无后缀 32位 -231 至231 -1
long Int64 L 64位 -263 至263 -1

无符号整数

C#类型 系统类型 后缀 尺寸 范围
byte Byte 无后缀 8位 0〜28 -1
ushort UInt16 无后缀 16位 0〜216 -1
uint UInt32 U 32位 0至232 -1
ulong UInt64 UL 64位 0至264 -1

实数

C#类型 系统类型 后缀 尺寸 范围
float Single F 32位 +/-(〜10-45 〜1038 )
double Double D 64位 +/-(〜10-328 〜10308 )
decimal Decimal M 128位 +/-(〜10-28 〜1028 )

十进制类型通常用于财务计算。

数字常量

数字常量可以使用十进制或十六进制符号;十六进制用0x前缀表示。例如:


int x = 1; 
long y = 0x7F; 

实数常量可以使用十进制和/或指数符号。例如:


double d = 1.5; 
double million = 1E06; 

数字常量类型推断

默认情况下,编译器将一个数字常量推断为double或整数类型:

如果常量包含小数点或指数符号(E),则为双精度。

常量类型是此列表中可以适合常量值的第一个类型:int,uint,long和ulong。

例如:


Console.WriteLine ( 1.0.GetType());    // Double (double) Console.WriteLine ( 1E06.GetType());   // Double (double) Console.WriteLine ( 1.GetType());      // Int32 (int) Console.WriteLine ( 0xF0000000.GetType()); // UInt32 (uint) 

数字后缀

数字后缀显式定义常量的类型。

后缀可以是小写或大写,如下所示:

类别 C#类型 例子
F float float f = 1.0F;
D double double d = 1D;
M decimal decimal d = 1.0M;
U uint uint i = 1U;
L long long i = 1L;
UL ulong ulong i = 1UL;

指定浮点或十进制字面值时,应始终应用FM后缀。

没有F后缀,以下行将无法编译,因为4.5将被推断为double类型,它没有隐式转换为float:


float f = 4.5F; 

相同的原则适用于十进制常量:


decimal d = -1231.13M; // Will not compile without the M suffix. 

整数到整数转换

当目标类型可以表示源类型中的每个可能值时,整数转换是隐式的。否则,需要显式转换。

例如:


int x = 12345;        // int is a 32-bit integral long y = x;           // Implicit conversion to 64-bit integral short z = (short)x;   // Explicit conversion to 16-bit integral 

浮点到浮点转换

float可以隐式转换为double,因为double可以表示float的每个可能的值。

反向转换必须是显式的。

浮点到整数转换

所有整数类型可以隐式转换为所有浮点类型:


int i = 1; 
float f = i; 

反向转换必须是显式的:


int i2 = (int)f; 

当您从浮点数转换为整数时,任何小数部分都将被截断(丢失)。

十进制转换

所有整数类型都可以隐式转换为十进制类型。

对小数类型的所有其他数字转换必须是显式的。

发表评论

© 2022 狸玖技术站 - 基于 WordPress