开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第9天,点击查看活动详情
本篇继续介绍 C# 中提供的内置值类型,即简单类型,也会被称为预定义类型:浮点型、bool 和 char类型。,它们各自的特点和具体使用...
值类型
内置值类型 Built-in value type
浮点型
介绍
浮点数值类型(floating-point numeric types)表示实数(real numbers),通常表示小数,不同的浮点数类型可以表示的精度不同。浮点型是值类型。
所有的浮点数值类型都支持算术arithmetic、比较comparison和相等equality操作符。
浮点型的类型
C# 提供的预定义浮点型如下:
| C# 类型/关键字 | 大致范围 | 精度 | 大小 | .NET 类型 |
|---|---|---|---|---|
float | ±1.5 x 10−45 至 ±3.4 x 1038 | 大约 6-9 位数字 | 4 个字节 | System.Single |
double | ±5.0 × 10−324 到 ±1.7 × 10308 | 大约 15-17 位数字 | 8 个字节 | System.Double |
decimal | ±1.0 x 10-28 至 ±7.9228 x 1028 | 28-29 位 | 16 个字节 | System.Decimal |
.NET类型为左侧C#类型的别名,两者可互换。
浮点型的默认值都为零0。同样有 MinValue 和 MaxValue 常量。
Double.NaN 表示非数字。
Double.NegativeInfinity 表示负的无穷大; Double.PositiveInfinity 表示正的无穷大。
decimal适用于需要由小数点位数决定精度的场景,比如财务金融领域、货币金额、利率等地方,推荐使用decimal。
实数字面量和后缀类型
实数字面量可以使用后缀确定:
- 没有后缀,或 后缀为
d、D表示double类型。 f或F后缀表示float类型。m或M后缀表示decimal类型。- 浮点数值的字面量中同样可以使用数字分隔符
_
下面是相关的示例:
var d1 = 3D;
var d2 = 5.1;
var d3 = 3.934_001d;
float f1 = 3_000.5F;
var f2 = 5.4f;
decimal myMoney1 = 1_000.5m;
var myMoney2 = 200.75M;
科学计数法表示
还可以使用科学计数法scientific notation表示实数。
double d = 0.52e2;
Console.WriteLine(d); // output 52
float f = 132.25E-2f;
Console.WriteLine(f); // output: 1.3225
decimal m = 1.5E6m;
Console.WriteLine(m); // output: 1500000
bool
布尔类型
bool类型的.NET别名为System.Boolean,表示布尔值 true 或 false,即 真 或 假。
bool是比较和相等操作符的结果类型。
bool类型的默认值为false
bool check = true;
var check2 = false;
布尔类型的字符串值
关于bool类型的字符串值,其结果会是首字母大写的 True 或 False。
var aa = false;
var bb = true;
Console.WriteLine("aa---"+ aa);
Console.WriteLine("bb---"+ bb);
// --- 输出
// aa---False
// bb---True
char 字符型
介绍
char类型的.NET别名为System.Char,表示一个 Unicode UTF-16 字符。
可以表示 U+0000 到 U+FFFF 的 Unicode 字符,大小为 16 位(bit),2个字节。
char类型的默认值为\0,代表 U+0000
最常用的文本字符串string类型,表示的是文本内容,由一系列char值组成。
char 字面量
char值的表示形式如下:
- 字符字面量。如
1、a、M等单个字符。 - Unicode 转义序列,
\u后面跟四个符号组成的十六进制表示形式的字符代码。 - 十六进制转义序列,
\x后面跟十六进制表示形式的字符代码。
Unicode escape sequence hexadecimal escape sequence
var chars1 = 'j';
var chars2 = '\u006A';
var chars3 = '\x006A';
还可以使用类型转换,将 整数 转换为对应Unicode码点的字符:
var chars4 = (char)106;
对于 Unicode 转义序列,必须指定全部四位十六进制值。即
\u006A是一个有效的转义序列,而\u06A和\u6A是无效的。对于十六进制转义序列,可以省略前导零。即
\x006A、\x06A和\x6A转义序列都是有效的,并对应于同一个字符。