.NET/C#基础之浮点型、bool和char类型

113 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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 102828-29 位16 个字节System.Decimal

.NET类型为左侧C#类型的别名,两者可互换。

浮点型的默认值都为零0。同样有 MinValueMaxValue 常量。

Double.NaN 表示非数字。

Double.NegativeInfinity 表示负的无穷大; Double.PositiveInfinity 表示正的无穷大。

decimal适用于需要由小数点位数决定精度的场景,比如财务金融领域、货币金额、利率等地方,推荐使用decimal

实数字面量和后缀类型

实数字面量可以使用后缀确定:

  • 没有后缀,或 后缀为dD 表示 double 类型。
  • fF 后缀表示 float 类型。
  • mM 后缀表示 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类型的字符串值,其结果会是首字母大写的 TrueFalse

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值的表示形式如下:

  • 字符字面量。如 1aM 等单个字符。
  • 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 转义序列都是有效的,并对应于同一个字符。

参考