C#中的数字类型是用来表示数字的一种数据类型,它们可以用来表示整数、浮点数、布尔值或其他特殊的值。C#中的数字类型可以分为内置的基本数字类型(如int、float、double)和用户定义的复合数字类型(如decimal、complex)。
C#中内置的基本数字类型包括int、float、double、bool 和 char。int 类型是一个32位有符号整形,它可以表达-2147483648到2147483647之间的任意一个正负整形。float 类型是一个32位单精度浮点形,它可以表达-3.402823e38到3.402823e38之间的任意一个正负浮动形。double 类型是一个64位双精度浮动形,它可以表达-1.79769313486232e308到1.79769313486232e308之间的任意一个正负浮动形。bool 类型是一个布尔形,它可以表达true或false。char 类型是一个16位无符号Unicode字符,它可以表达U+0000到U+ffff之间的任意一个Unicode字符。
C#中用户定义的复合数字类型包括decimal 和 complex 。decimal 是128位十进制浮动形,它能够准备地表达-79,228,162,514,264,337,593,543,950,335 到 79,228,162,514,264,337,593,543,950,335 之间的所有十进制数字。complex 是复杂形式,它能够准备地表达所有复杂形式中所有不同部分之间关于加法、乘法、除法运作方式的关于不同部分之间关于加法、乘法、除法运作方式的关于不同部分之间关于加法、乘法、除法运作方式的关于不同部分之间关于加法、乘法、除法运作方式的所有信息。
public static void Main() { int a = 10; float b = 20.5f; double c = 30.5; bool d = true; char e = 'A'; decimal f = 40.5m; Complex g = new Complex(50.5); Console.WriteLine("a: {0}, b: {1}, c: {2}, d: {3}, e: {4}, f: {5}, g: {6}", a ,b ,c ,d ,e ,f ,g); }
C#具有下表中显示的预定义数字类型。
有符号整数
C#类型 | 系统类型 | 后缀 | 大小 | 范围 |
---|---|---|---|---|
sbyte | SByte | 无后缀 | 8位 | -27 〜27 -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; |
指定浮点或十进制字面值时,应始终应用F
和M
后缀。
没有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;
当您从浮点数转换为整数时,任何小数部分都将被截断(丢失)。
所有整数类型都可以隐式转换为十进制类型。
对小数类型的所有其他数字转换必须是显式的。
C#算术运算符为所有数字类型定义算术运算符(+, - ,*,/,%)。运算符含义+加-减*剩/除%求余自增和自减运算符自增和自减运算...
C#数组数组表示特定类型的固定数量的变量。 在元素类型后面创建一个带方括号的数组。 例如:char[] letterArray = new char[5]; ...
C#参数方法可以具有参数序列。参数定义必须为该方法提供的参数集。在以下示例中,myMethod方法具有名为p的单个参数,类型为int...