处理 C# 中的整数和浮点数

探索整数运算精度和限值

在上一个示例中,整数除法截断了结果。 可以使用余数运算符(即 % 字符)计算余数:

C#
int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
int e = (a + b) % c;
Console.WriteLine($"quotient: {d}");
Console.WriteLine($"remainder: {e}");

C# 整数类型不同于数学上的整数的另一点是,int 类型有最小限值和最大限值。 在交互式窗口中,运行以下代码,看看这些限值的运行机制如何:

C#
int max = int.MaxValue;
int min = int.MinValue;
Console.WriteLine($"The range of integers is {min} to {max}");

如果运算生成的值超过这些限值,则会出现下溢或溢出的情况。 答案似乎是从一个限值覆盖到另一个限值的范围。 例如,将以下两行代码添加到交互式窗口中:

C#
int what = max + 3;
Console.WriteLine($"An example of overflow: {what}");

可以看到,答案非常接近最小(负)整数。 与 min + 2 相同。 加法运算会让整数溢出允许的值。 答案是一个非常大的负数,因为溢出从最大整数值覆盖回最小整数值。

如果 int 类型无法满足需求,还会用到限值和精度不同的其他数字类型。 接下来,让我们来研究一下这些数字类型。

在浏览器中尝试运行代码