Docs-.NET-C#-指南-语言参考-关键字-值类型:内置数值转换
| ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:内置数值转换 |
| 1.返回顶部 |
内置数值转换(C# 参考)
- 2019/10/22
C# 提供了一组整型和浮点数值类型。 任何两种数值类型之间都可以进行隐式或显式转换。 必须使用强制转换运算符 () 才能调用显式转换。
隐式数值转换
下表显示内置数值类型之间的预定义隐式转换:
| From | 到 |
|---|---|
| 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 |
| ulong | float、double 或 decimal |
| float | double |
备注
从 int、uint``long 或 ulong 到 float 的隐式转换以及从 long 或 ulong 到 double 的隐式转换可能会丢失精准率,但绝不会丢失一个数量级。 其他隐式数值转换不会丢失任何信息。
另请注意
不存在针对
byte和sbyte类型的隐式转换。 不存在从double和decimal类型的隐式转换。decimal类型和float或double类型之间不存在隐式转换。类型
int的常量表达式的值(例如,由整数文本所表示的值)如果在目标类型的范围内,则可隐式转换为sbyte、byte、short、ushort、uint或ulong:C#复制byte a = ;
byte b = ; // CS0031: Constant value '300' cannot be converted to a 'byte'如前面的示例所示,如果该常量值不在目标类型的范围内,则发生编译器错误 CS0031。
显式数值转换
下表显示不存在隐式转换的内置数值类型之间的预定义显式转换:
| From | 到 |
|---|---|
| sbyte | byte、ushort、uint 或 ulong |
| byte | sbyte |
| short | sbyte、byte、ushort、uint 或 ulong |
| ushort | sbyte、byte 或 short |
| int | sbyte、byte、short、ushort、uint 或 ulong |
| uint | sbyte、byte、short、ushort 或 int |
| long | sbyte、byte、short、ushort、int、uint 或 ulong。 |
| ulong | sbyte、byte、short、ushort、int、uint 或 long。 |
| float | sbyte、byte、short、ushort、int、uint、long、ulong 或 decimal |
| double | sbyte、byte、short、ushort、int、uint、long、ulong、float 或 decimal |
| decimal | sbyte、byte、short、ushort、int、uint、long、ulong、float 或 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.返回顶部 |
| 3.返回顶部 |
| 4.返回顶部 |
| 5.返回顶部 |
| 6.返回顶部 |
![]() |
作者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |
Docs-.NET-C#-指南-语言参考-关键字-值类型:内置数值转换的更多相关文章
- Docs-.NET-C#-指南-语言参考-关键字-值类型-:浮点数值类型
ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型-:浮点数值类型 1.返回顶部 1. 浮点数值类型(C# 引用) 2019/10/22 “浮点类型”是“简单类型”的子集,可以使 ...
- Docs-.NET-C#-指南-语言参考-关键字-值类型:可以 null 的值类型
ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:可以 null 的值类型 1.返回顶部 1. Nullable value types (C# reference) 2019 ...
- Docs-.NET-C#-指南-语言参考-关键字-值类型:struct
ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:struct 1.返回顶部 1. struct(C# 参考) 2015/07/20 struct 类型是一种值类型,通常用来封 ...
- Docs-.NET-C#-指南-语言参考-关键字-值类型:enum
ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:enum 1.返回顶部 1. enum(C# 参考) 2015/07/20 enum 关键字用于声明枚举,一种包含一组被称为枚 ...
- Docs-.NET-C#-指南-语言参考-关键字-值类型:char
ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:char 1.返回顶部 1. char(C# 参考) 2019/10/22 char 类型关键字是 .NET System.C ...
- Docs-.NET-C#-指南-语言参考-关键字-值类型:bool
ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:bool 1.返回顶部 1. bool(C# 参考) 2015/07/20 bool 关键字是 System.Boolean ...
- Docs-.NET-C#-指南-语言参考-关键字-内置类型-值类型:整型数值类型
ylbtech-Docs-.NET-C#-指南-语言参考-关键字-内置类型-值类型:整型数值类型 1.返回顶部 1. 整型数值类型(C# 参考) 2019/10/22 “整型数值类型”是“简单类型”的 ...
- Docs-.NET-C#-指南-语言参考-关键字-内置类型-值类型:值类型的功能
ylbtech-Docs-.NET-C#-指南-语言参考-关键字-内置类型-值类型:值类型的功能 1.返回顶部 1. 值类型(C# 参考) 2018/11/26 有两种值类型: 结构 枚举 值类型的主 ...
- Docs-.NET-C#-指南-语言参考-关键字:C# 关键字
ylbtech-Docs-.NET-C#-指南-语言参考-关键字:C# 关键字 1.返回顶部 1. C# 关键字 2017/03/07 关键字是预定义的保留标识符,对编译器有特殊意义. 除非前面有 @ ...
随机推荐
- 高并发架构系列:Redis并发竞争key的解决方案详解
https://blog.csdn.net/ChenRui_yz/article/details/85096418 https://blog.csdn.net/ChenRui_yz/article/l ...
- Spring boot集成Websocket,前端监听心跳实现
第一:引入jar 由于项目是springboot的项目所以我这边简单的应用了springboot自带的socket jar <dependency> <groupId>org. ...
- springboot学习笔记(二)—— springboot的启动模式设置
把springboot的启动类图标(spring)去掉,在启动类中添加以下代码 package com.xdr.spring; import org.springframework.boot.Bann ...
- P2261 [CQOI2007]余数求和[整除分块]
题目大意 给出正整数 n 和 k 计算 \(G(n, k)=k\ \bmod\ 1 + k\ \bmod\ 2 + k\ \bmod\ 3 + \cdots + k\ \bmod\ n\) 的值 其中 ...
- 《发际线总是和我作队》第九次团队作业:Beta冲刺Scrum Meeting2
项目 内容 这个作业属于哪个课程 软件工程 这个作业的要求在哪里 实验十三 团队作业9:Beta冲刺与团队项目冲刺 团队名称 发际线总和我作队 作业学习目标 (1)掌握软件黑盒测试技术:(2)掌握软件 ...
- 十三.Java使用Protobuf3
为什么使用Protobuf? 本教程翻译自谷歌开发者官网,原文地址:https://developers.google.com/protocol-buffers/docs/javatutorial.开 ...
- 【JS】知识笔记
一.JS文件位置 多个.JS文件最好合并到一个文件中,减少加载页面时发送的请求数量. 某个单独页面需要的js,最好放在HTML文档的最后,</body>之前,这样能使浏览器更快地加载页面. ...
- ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/usr/local/mysql/mysql.sock' (2)
这种情况一般是mysql被杀掉了. 要重新启动. ps -A | grep -i mysql kill 列出来的进程 service mysql start 我的问题就解决了
- 力扣50题 Pow(x,n)
本题是力扣网第50题. 实现 pow(x, n) ,即计算 x 的 n 次幂函数. 采用递归和非递归思路python实现. class Solution: #递归思路 def myPow_recurs ...
- (33)Vue购物车
computed:{ lists(){ return this.$store.state.list }, }, 用v-model来双向绑定input控制checkbox是否选中 Vue中双向数据绑定是 ...
