C# 7.0 核心技术指南 (23):C#语言基础 2.4.2

阅读数:5 2019 年 11 月 30 日 23:37

C# 7.0核心技术指南(23):C#语言基础 2.4.2

(数值转换)

内容简介
本书前三章将集中介绍 C#语言。首先介绍基本的语法、类型和变量。而后会介绍一些高级的特性,如不安全代码以及预处理指令。如果你是 C#语言的初学者,请循序渐进地阅读这些章节。
其余各章则涵盖了.NET Framework 的核心功能,包括 LINQ、XML、集合、并发、I/O 和网络、内存管理、反射、动态编程、特性、安全、应用程序域和原生互操作性等主题。第 6 章和第 7 章是后续主题的基础,除这两章之外,其余各章可以按照需要以任何顺序阅读。LINQ 相关的三个章节好按顺序阅读。其中的一些章节需要一些并发相关的知识,这些知识将在第 14 章中介绍。

2.4.2.1 整数类型到整数类型的转换

整数类型转换在目标类型能够表示源类型的所有可能值时是隐式转换,否则需要显式转换。例如:

复制代码
int x = 12345; // int is a 32-bit integer
long y = x; // Implicit conversion to 64-bit integral type
short z = (short)x; // Explicit conversion to 16-bit integral type

2.4.2.2 浮点类型到浮点类型的转换

double 能表示所有可能的 float 值,因此 float 能隐式转换为 double。反之则必须是显式转换。

2.4.2.3 浮点类型到整数类型的转换

所有整数类型可以隐式转换为浮点数类型:

复制代码
int i = 1;
float f = i;

反之则必须是显式转换:

复制代码
int i2 = (int)f;

将浮点数转换为整数时,小数点后的数值将被截去而不会舍入。静态类 System.Convert 提供了在不同值类型之间转换的舍入方法(见第 6 章)。

将大的整数类型隐式转换为浮点类型会保留数值部分,但是有时会丢失精度。这是因为浮点类型虽然拥有比整数类型更大的数值,但是有时其精度却比整数类型要小。以下代码用一个更大的数重复上述示例展示了这种精度丢失的情况:

复制代码
int i1 = 100000001;
float f = i1; // Magnitude preserved, precision lost
int i2 = (int)f; // 100000000

2.4.2.4 decimal 类型转换

所有的整数类型都能隐式转换为 decimal 类型。这是因为 decimal 可以表示所有可能的 C#整数类型值。其他所有的数值类型转换为 decimal 或从 decimal 类型进行转换都必须是显式转换。

C# 7.0核心技术指南(23):C#语言基础 2.4.2

购书地址 https://item.jd.com/12681788.html?dist=jd

评论

发布