数值转换-隐式数值转换表

  • 数值转换-隐式数值转换表(C# 参考)
  • 数值转换-显式数值转换表(C#
    参考)

**值类型表

C#数据类型及范围


**

 

什么是隐式转换

值类型 类别

bool

布尔型

byte

无符号、数值、整数

char

无符号、数值、整数

decimal

数值、十进制

double

数值、浮点

enum

枚举

float

数值、浮点

int

有符号、数值、整数

long

有符号、数值、整数

sbyte

有符号、数值、整数

short

有符号、数值、整数

struct

用户定义的结构

uint

无符号、数值、整数

ulong

无符号、数值、整数

ushort

无符号、数值、整数

C# 类型

 

.NET Framework 类型

bool

 

System.Boolean

byte

 

System.Byte

sbyte

 

System.SByte

char

 

System.Char

decimal

 

System.Decimal

double

 

System.Double

float

 

System.Single

int

 

System.Int32

uint

 

System.UInt32

long

 

System.Int64

ulong

 

System.UInt64

object

 

System.Object

short

 

System.Int16

ushort

 

System.UInt16

string

 

System.String

Implicit Conversion

**整型表

 

隐式转换就是直接使用,比如可以把一个 byte 类型直接用在 int 上。

**

 

比如以下直接把 byte 的 b 赋给 int 的
n,之间是直接用的,没存在什么额外的关键字,全由系统自动完成类型转换。

类型 范围 大小

sbyte

-128 到 127

有符号 8 位整数

byte

0 到 255

无符号 8 位整数

char

U+0000 到 U+ffff

16 位 Unicode 字符

short

-32,768 到 32,767

有符号 16 位整数

ushort

0 到 65,535

无符号 16 位整数

int

-2,147,483,648 到 2,147,483,647

有符号 32 位整数

uint

0 到 4,294,967,295

无符号 32 位整数

long

-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807

有符号 64 位整数

ulong

0 到 18,446,744,073,709,551,615

无符号 64 位整数

请记住:在 C# 中不允许使用未初始化的变量。

byte b = 1; int n = b;

浮点型表

值类型

默认值

bool

false

byte

0

char

‘’

decimal

0.0M

double

0.0D

enum

表达式 (E)0 产生的值,其中 E 为 enum 标识符。

float

0.0F

int

0

long

0L

sbyte

0

short

0

struct

将所有的值类型字段设置为默认值并将所有的引用类型字段设置为 null 时产生的值。

uint

0

ulong

0

ushort

0

隐式数值转换表(摘自 MSDN)

类型 大致范围 精度

float

±1.5e−45 到 ±3.4e38

7 位

double

±5.0e−324 到 ±1.7e308

15 到 16 位

 

sbyte

short、int、long、float、double 或 decimal

byte

short、ushort、int、uint、long、ulong、float、double 或 decimal

short

int、long、float、double 或 decimal

ushort

int、uint、long、ulong、float、double 或 decimal

int

long、float、double 或 decimal

uint

long、ulong、float、double 或 decimal

long

float、double 或 decimal

char

ushort、int、uint、long、ulong、float、double 或 decimal

float

double

ulong

float、double 或 decimal

内置类型表

下表显示了整型的大小和范围,这些类型构成了简单类型的一个子集。

澳门新葡萄京官网注册 ,备注(摘自 MSDN)

C# 类型 .NET Framework 类型

bool

System.Boolean

byte

System.Byte

sbyte

System.SByte

char

System.Char

decimal

System.Decimal

double

System.Double

float

System.Single

int

System.Int32

uint

System.UInt32

long

System.Int64

ulong

System.UInt64

object

System.Object

short

System.Int16

ushort

System.UInt16

string

System.String

类型

范围

大小

sbyte

-128 到 127

有符号 8 位整数

byte

0 到 255

无符号 8 位整数

char

U+0000 到 U+ffff

16 位 Unicode 字符

short

-32,768 到 32,767

有符号 16 位整数

ushort

0 到 65,535

无符号 16 位整数

int

-2,147,483,648 到 2,147,483,647

有符号 32 位整数

uint

0 到 4,294,967,295

无符号 32 位整数

long

-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807

有符号 64 位整数

ulong

0 到 18,446,744,073,709,551,615

无符号 64 位整数

  • 从 int、uint 或 long 到 float 的转换以及从 long 到 double
    的转换的精度可能会降低,但数值大小不受影响。
  • 不存在到 char 类型的隐式转换。
  • 不存在浮点型与 decimal 类型之间的隐式转换。
  • int 类型的常数表达式可转换为 sbyte、byte、short、ushort、uint 或
    ulong,前提是常数表达式的值处于目标类型的范围之内。

  • 数值转换-隐式数值转换表(C# 参考)

  • 数值转换-显式数值转换表(C#
    参考)

    备注
       除了 objectstring
外,表中的所有类型均称为简单类型。

如果整数表示的值超出了 ulong 的范围,将产生编译错误。


默认值表

浮点型表(C# 参考)

值类型 默认值

bool

false

byte

0

char

‘"0’

decimal

0.0M

double

0.0D

enum

表达式 (E)0 产生的值,其中 E 为 enum 标识符。

float

0.0F

int

0

long

0L

sbyte

0

short

0

struct

将所有的值类型字段设置为默认值并将所有的引用类型字段设置为 null 时产生的值。

uint

0

ulong

0

ushort

0

下表显示了浮点型的精度和大致范围。


隐式数值转换表

类型

大致范围

精度

float

±1.5e−45 到 ±3.4e38

7 位

double

±5.0e−324 到 ±1.7e308

15 到 16 位

sbyte

shortintlongfloatdoubledecimal

byte

shortushortintuintlongulongfloatdoubledecimal

short

intlongfloatdoubledecimal

ushort

intuintlongulongfloatdoubledecimal

int

longfloatdoubledecimal

uint

longulongfloatdoubledecimal

long

floatdoubledecimal

char

ushortintuintlongulongfloatdoubledecimal

float

double

ulong

floatdoubledecimal

 

  备注
     从 intuintlongfloat 的转换以及从 long
double 的转换的精度可能会降低,但数值大小不受影响。
     不存在到 char 类型的隐式转换。
     不存在浮点型与 decimal 类型之间的隐式转换。
     int 类型的常数表达式可转换为
sbytebyteshortushortuint
ulong,前提是常数表达式的值处于目标类型的范围之内。

隐式数值转换表(C# 参考)

**显式数值转换表

下表显示了预定义的隐式数值转换。隐式转换可能在多种情形下发生,包括调用方法时和在赋值语句中。

**

sbyte

short、int、long、float、double 或 decimal

byte

short、ushort、int、uint、long、ulong、float、double 或 decimal

short

int、long、float、double 或 decimal

ushort

int、uint、long、ulong、float、double 或 decimal

int

long、float、double 或 decimal

uint

long、ulong、float、double 或 decimal

long

float、double 或 decimal

char

ushort、int、 uint、 long、ulong、 float、double 或 decimal

float

double

ulong

float、 double 或 decimal

sbyte

byteushortuintulongchar

byte

Sbyte 或者 char

short

sbytebyteushortuintulongchar

ushort

sbytebyteshortchar

int

sbytebyteshortushortuintulongdecimal

decimal

sbytebyteshortushortintuintlongulongcharfloatdouble

<!–[if !vml]–><!–[endif]–> 备注

  • 从 int、uint 或 long 到 float 的转换以及从 long 到 double
    的转换的精度可能会降低,但数值大小不受影响。
  • 不存在到 char 类型的隐式转换。
  • 不存在浮点型与 decimal 类型之间的隐式转换。
  • int 类型的常数表达式可转换为 sbyte、byte、short、ushort、uint 或
    ulong,前提是常数表达式的值处于目标类型的范围之内。

显式数值转换表(C# 参考)

显式数值转换用于通过显式转换表达式,将任何数字类型转换为任何其他数字类型。对于它不存在隐式转换。下表显示了这些转换。

sbyte

byte、ushort、uint、ulong 或 char

byte

Sbyte 或者 char

short

sbyte、 byte、 ushort、 uint、 ulong 或 char

ushort

sbyte、 byte、 short 或 char

int

sbyte、 byte、 short、 ushort、 uint、 ulong 或 char

uint

sbyte、byte、 short、 ushort、 int 或 char

long

sbyte、 byte、 short、 ushort、 int、 uint、 ulong 或 char

ulong

sbyte、 byte、 short、 ushort、 int、 uint、 long 或 char

char

sbyte、byte 或 short

float

sbyte、 byte、 short、 ushort int、 uint、 long、 ulong、 char 或 decimal

double

sbyte、 byte、 short、 ushort、 int、 uint、 long、 ulong、 char、 float 或 decimal

decimal

sbyte、 byte、 short、 ushort、 int、 uint、 long、 ulong、 char、 float 或 double

 备注

显式数值转换可能导致精度损失或引发异常。

将 decimal
值转换为整型时,该值将舍入为与零最接近的整数值。如果结果整数值超出目标类型的范围,则会引发
OverflowException。

将 double 或 float
值转换为整型时,值会被截断。如果该结果整数值超出了目标值的范围,其结果将取决于溢出检查上下文。在
checked 上下文中,将引发 OverflowException;而在 unchecked
上下文中,结果将是一个未指定的目标类型的值。

将 double 转换为 float 时,double 值将舍入为最接近的 float 值。如果
double 值因过小或过大而使目标类型无法容纳它,则结果将为零或无穷大。

将 float 或 double 转换为 decimal 时,源值将转换为 decimal
表示形式,并舍入为第 28
个小数位之后最接近的数(如果需要)。根据源值的不同,可能产生以下结果:

  • 如果源值因过小而无法表示为 decimal,那么结果将为零。
  • 如果源值为 NaN(非数字值)、无穷大或因过大而无法表示为
    decimal,则会引发 OverflowException。

将 decimal 转换为 float 或 double 时,decimal 值将舍入为最接近的 double
或 float 值。

发表评论

电子邮件地址不会被公开。 必填项已用*标注