📜  c# 将 double 转换为 int - C# (1)

📅  最后修改于: 2023-12-03 15:29:47.447000             🧑  作者: Mango

将 double 转换为 int

在C#中,将double类型转换为int类型可以使用显式转换(explicit conversion)。

显式转换

使用显式转换可以将double类型的变量转换为int类型的变量。这种转换可能会造成数据精度的损失。

double x = 3.14;
int y = (int)x;

Console.WriteLine("x = {0}, y = {1}", x, y);

输出:

x = 3.14, y = 3
舍入方式

在将double类型转换为int类型时,如果小数部分为0.5,会有两种舍入方式:

  • 向下舍入(向负无穷方向舍入)
  • 向上舍入(向正无穷方向舍入)

默认情况下,C#使用的是向零舍入(向0方向舍入),也就是说,小数部分为0.5时,会向下舍入。

double x = 0.5;
int y = (int)x;

Console.WriteLine("x = {0}, y = {1}", x, y);

输出:

x = 0.5, y = 0

可以使用System.MidpointRounding枚举类型指定舍入方式。枚举类型有以下三个值:

  • ToEven(默认值,向最近的偶数舍入)
  • AwayFromZero(向离它最近的整数舍入)
  • ToZero(向零舍入)

例如,将小数部分为0.5的double类型转换为int类型时,使用AwayFromZero舍入方式可以实现向上舍入。

double x = 3.5;
int y = (int)Math.Round(x, MidpointRounding.AwayFromZero);

Console.WriteLine("x = {0}, y = {1}", x, y);

输出:

x = 3.5, y = 4
异常

当将超出int类型范围的double类型转换为int类型时,会抛出OverflowException异常。

double x = double.MaxValue;
int y = (int)x;

抛出异常:

System.OverflowException: OverflowException, 尝试将超出区间的数字转换为int类型。
使用Parse方法

除了使用显式转换外,还可以使用int.Parse方法将字符串类型的double值转换为int类型的值。

string s = "3.14";
int y = int.Parse(s);

Console.WriteLine("s = {0}, y = {1}", s, y);

输出:

s = 3.14, y = 3

需要注意的是,在使用int.Parse方法将字符串类型的double值转换为int类型的值时,也可能会抛出OverflowException异常。