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

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

  1. Docs-.NET-C#-指南-语言参考-关键字-值类型-:浮点数值类型

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型-:浮点数值类型 1.返回顶部 1. 浮点数值类型(C# 引用) 2019/10/22 “浮点类型”是“简单类型”的子集,可以使 ...

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

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:可以 null 的值类型 1.返回顶部 1. Nullable value types (C# reference) 2019 ...

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

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:struct 1.返回顶部 1. struct(C# 参考) 2015/07/20 struct 类型是一种值类型,通常用来封 ...

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

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:enum 1.返回顶部 1. enum(C# 参考) 2015/07/20 enum 关键字用于声明枚举,一种包含一组被称为枚 ...

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

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:char 1.返回顶部 1. char(C# 参考) 2019/10/22 char 类型关键字是 .NET System.C ...

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

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:bool 1.返回顶部 1. bool(C# 参考) 2015/07/20 bool 关键字是 System.Boolean  ...

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

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-内置类型-值类型:整型数值类型 1.返回顶部 1. 整型数值类型(C# 参考) 2019/10/22 “整型数值类型”是“简单类型”的 ...

  8. Docs-.NET-C#-指南-语言参考-关键字-内置类型-值类型:值类型的功能

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-内置类型-值类型:值类型的功能 1.返回顶部 1. 值类型(C# 参考) 2018/11/26 有两种值类型: 结构 枚举 值类型的主 ...

  9. Docs-.NET-C#-指南-语言参考-关键字:C# 关键字

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字:C# 关键字 1.返回顶部 1. C# 关键字 2017/03/07 关键字是预定义的保留标识符,对编译器有特殊意义. 除非前面有 @ ...

随机推荐

  1. java 实现 单链表

    class Node{ public int val; public Node next; public Node(int val){ this.val=val; } } class LinkList ...

  2. 《你们都是魔鬼吗》第八次团队作业:第三天Alpha冲刺

    <你们都是魔鬼吗>第八次团队作业:Alpha冲刺 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 你们都是魔鬼吗 作业学习目标 完成最 ...

  3. web项目转为maven项目

    声明一下项目本来就是maven项目,只是刚开始部署的时候转为maven项目!!! 2.查看POM文件 3.导入依赖jar包(编译,运行,打包) 4. 注意项目为Maven+java 加载jar包小技巧

  4. ip address control获取ip字符串

    1.环境:vs2010 & 默认项目字符集(貌似是unicode) 2.首先为ip address control添加control类型变量m_ipaddressedit, BYTE ips[ ...

  5. SPA项目开发--左侧树加首页导航

    SPA项目开发--左侧树以及首页导航 1. Mock.js 前后端分离之后,前端迫切需要一种机制,不再需要依赖后端接口开发,而今天的主角mockjs就可以做到这一点    Mock.js是一个模拟数据 ...

  6. CODE FESTIVAL 2016 Grand Final 题解

    传送门 越学觉得自己越蠢--这场除了\(A\)之外一道都不会-- \(A\) 贪心从左往右扫,能匹配就匹配就好了 //quming #include<bits/stdc++.h> #def ...

  7. Luogu4931 情侣?给我烧了!(加强版)【生成函数】

    题目链接:洛谷 大家一起 日 ♂ % EI 设\(D_i\)表示\(k=0\)时的答案.那么 \[ f(n,k)=\binom{n}{k}^2D_{n-k}k!2^k \] 意义是选择\(k\)对情侣 ...

  8. GoCN每日新闻(2019-09-24)

    1. Go 搭建的高效网页爬虫:https://creekorful.me/building-fast-modern-web-crawler/ 2. Go 时区处理:https://medium.co ...

  9. UOJ#397. 【NOI2018】情报中心 线段树合并 虚树

    原文链接www.cnblogs.com/zhouzhendong/p/UOJ397.com 前言 这真可做吗?只能贺题解啊-- 题解 我们称一条路径的 LCA 为这条路径两端点的 LCA. 我们将相交 ...

  10. Gin-Go学习

    笔记一:Hello World https://www.cnblogs.com/tudaogaoyang/p/8056186.html 笔记二:Gin-Web框架 https://www.cnblog ...