Docs-.NET-C#-指南-语言参考-关键字-值类型:内置数值转换

ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:内置数值转换
1.返回顶部

1、

内置数值转换(C# 参考)

  • 2019/10/22

C# 提供了一组整型浮点数值类型。 任何两种数值类型之间都可以进行隐式或显式转换。 必须使用强制转换运算符 () 才能调用显式转换。

隐式数值转换

下表显示内置数值类型之间的预定义隐式转换:

From
sbyte shortintlongfloatdouble 或 decimal
byte shortushortintuintlongulongfloatdouble 或 decimal
short intlongfloatdouble 或 decimal
ushort intuintlongulongfloatdouble 或 decimal
int longfloatdouble 或 decimal
uint longulongfloatdouble 或 decimal
long floatdouble 或 decimal
ulong floatdouble 或 decimal
float double

备注

从 intuint``long 或 ulong 到 float 的隐式转换以及从 long 或 ulong 到 double 的隐式转换可能会丢失精准率,但绝不会丢失一个数量级。 其他隐式数值转换不会丢失任何信息。

另请注意

  • 任何整型数值类型都可以隐式转换为任何浮点数值类型
  • 不存在针对 byte 和 sbyte 类型的隐式转换。 不存在从 double 和 decimal 类型的隐式转换。
  • decimal 类型和 float 或 double 类型之间不存在隐式转换。
  • 类型 int 的常量表达式的值(例如,由整数文本所表示的值)如果在目标类型的范围内,则可隐式转换为 sbytebyteshortushortuint 或 ulong

    C#复制

    byte a = 13;
    byte b = 300;  // CS0031: Constant value ‘300‘ cannot be converted to a ‘byte‘

    如前面的示例所示,如果该常量值不在目标类型的范围内,则发生编译器错误 CS0031

显式数值转换

下表显示不存在隐式转换的内置数值类型之间的预定义显式转换:

From
sbyte byteushortuint 或 ulong
byte sbyte
short sbytebyteushortuint 或 ulong
ushort sbytebyte 或 short
int sbytebyteshortushortuint 或 ulong
uint sbytebyteshortushort 或 int
long sbytebyteshortushortintuint 或 ulong
ulong sbytebyteshortushortintuint 或 long
float sbytebyteshortushortintuintlongulong 或 decimal
double sbytebyteshortushortintuintlongulongfloat 或 decimal
decimal sbytebyteshortushortintuintlongulongfloat 或 double

备注

显式数值转换可能会导致数据丢失或引发异常,通常为 OverflowException

另请注意

  • 将整数类型的值转换为另一个整数类型时,结果取决于溢出检查上下文。 在已检查的上下文中,如果源值在目标类型的范围内,则转换成功。 否则会引发 OverflowException。 在未检查的上下文中,转换始终成功,并按如下方式进行:

    • 如果源类型大于目标类型,则通过放弃其“额外”最高有效位来截断源值。 结果会被视为目标类型的值。
    • 如果源类型小于目标类型,则源值是符号扩展或零扩展,以使其与目标类型的大小相同。 如果源类型带符号,则是符号扩展;如果源类型是无符号的,则是零扩展。 结果会被视为目标类型的值。
    • 如果源类型与目标类型的大小相同,则源值将被视为目标类型的值。
  • 将 decimal 值转换为整型类型时,此值会向零舍入到最接近的整数值。 如果生成的整数值处于目标类型的范围之外,则会引发 OverflowException
  • 将 double 或 float 值转换为整型类型时,此值会向零舍入到最接近的整数值。 如果生成的整数值处于目标类型范围之外,则结果会取决于溢出上下文。 在已检查的上下文中,引发 OverflowException;而在未检查的上下文中,结果是目标类型的未指定值。
  • 将 double 转换为 float 时,double 值舍入为最接近的 float 值。 如果 double 值太小或太大,无法匹配 float 类型,结果将为零或无穷大。
  • 将 float 或 double 转换为 decimal 时,源值转换为 decimal 表示形式,并并五入到第 28 位小数后最接近的数(如果需要)。 根据源值的值,可能出现以下结果之一:
    • 如果源值太小,无法表示为 decimal,结果则为零。
    • 如果源值为 NaN(非数值)、无穷大或太大而无法表示为 decimal,则引发 OverflowException
  • 将 decimal 转换为 float 或 double 时,源值分别舍入为最接近的 float 或 double 值。

C# 语言规范

有关更多信息,请参阅 C# 语言规范的以下部分:

请参阅

2、

2.返回顶部
3.返回顶部
4.返回顶部
5.返回顶部

1、

https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/numeric-conversions

2、

6.返回顶部
作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/storebook/p/11846193.html

时间: 2024-08-04 06:36:20

Docs-.NET-C#-指南-语言参考-关键字-值类型:内置数值转换的相关文章

Docs-.NET-C#-指南-语言参考-关键字-值类型:可以 null 的值类型

ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:可以 null 的值类型 1.返回顶部 1. Nullable value types (C# reference) 2019/11/04 7 分钟阅读时长 A nullable value type T? represents all values of its underlying value type T and an additional null value. For example, you can assig

Docs-.NET-C#-指南-语言参考-关键字-值类型:struct

ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:struct 1.返回顶部 1. struct(C# 参考) 2015/07/20 struct 类型是一种值类型,通常用来封装小型相关变量组,例如,矩形的坐标或库存商品的特征. 下面的示例显示了一个简单的结构声明: C#复制 public struct Book { public decimal price; public string title; public string author; } 备注 结构还可以包含构

Docs-.NET-C#-指南-语言参考-关键字-值类型:char

ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:char 1.返回顶部 1. char(C# 参考) 2019/10/22 char 类型关键字是 .NET System.Char 结构类型的别名,它表示 Unicode UTF-16 字符: 类型 范围 大小 .NET 类型 char U+0000 到 U+FFFF 16 位 System.Char 文本 char 类型的常量可以编写为字符文本.十六进制转义序列或 Unicode 表示形式. 也可以将整型字符代码强制转

Docs-.NET-C#-指南-语言参考-关键字-值类型:bool

ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:bool 1.返回顶部 1. bool(C# 参考) 2015/07/20 bool 关键字是 System.Boolean 的别名. 它用于声明变量来存储布尔值:true 和 false. 备注 如需支持三值逻辑(例如,在使用支持三值布尔类型的数据库时),请使用 bool? 类型. 对于 bool? 操作数,预定义的 & 和 | 运算符支持三值逻辑. 有关详细信息,请参阅布尔逻辑运算符一文的可以为 null 的布尔逻辑运

可空值类型与值类型这间的转换

int s = 5; int? s_null; long t; long? t_null; t = s; //隐式转换 S -> T s = (int)t; //显示转换 T -> S s_null = s; //隐式转换 S -> S? s = (int)s_null; //显示转换 S? -> T t_null = s_null; //隐式转换 S? -> T? s_null = (int?)t_null; //显示转换 T? -> S? t_null = s; /

C语言 函数返回值类型

1.返回值类型  51.有一个函数原型如下所示,则该函数的返回类型为( ) . C abc(float x,float y); A. void B. double C. int D. float 3 1 51.有一个函数原型如下所示,则该函数的返回类型为( ) . C 2 abc(float x,float y); 3 A. void         B. double         C. int         D. float C 语言函数默认返回类型为 int 29.以下函数值的类型是_

Go语言中的值类型和引用类型

一.值类型和引用类型值类型:int.float.bool和string这些类型都属于值类型,使用这些类型的变量直接指向存在内存中的值,值类型的变量的值存储在栈中.当使用等号=将一个变量的值赋给另一个变量时,如 j = i ,实际上是在内存中将 i 的值进行了拷贝.可以通过 &i 获取变量 i 的内存地址.  值拷贝 引用类型:特指slice.map.channel这三种预定义类型.引用类型拥有更复杂的存储结构:(1)分配内存 (2)初始化一系列属性等一个引用类型的变量r1存储的是r1的值所在的内

PHP-Manual的学习----【语言参考】----【类型】-----【array数组】

1.Array 数组  PHP 中的 数组 实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性.由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的. 解释这些结构超出了本手册的范围,但对于每种结构至少会提供一个例子.要得到这些结构的更多信息,建议参考有关此广阔主题的其它著作. 2.语法:定义数组 array()  可以用 ar

PHP-Manual的学习----【语言参考】----【类型】-----【Boolean类型】

2017年7月20日15:41:26Boolean 布尔类型 1.这是最简单的类型.boolean 表达了真值,可以为 TRUE 或 FALSE. 其实就是真假的问题.2.语法 要指定一个布尔值,使用关键字 TRUE 或 FALSE.两个都不区分大小写. <?php$foo = True; // assign the value TRUE to $foo?> 3.通常情况下,通常运算符所返回的 boolean 值结果会被传递给控制流程. 4.要明确地将一个值转换成 boolean,用 (boo