📅  最后修改于: 2023-12-03 15:29:47.447000             🧑  作者: Mango
在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枚举类型指定舍入方式。枚举类型有以下三个值:
例如,将小数部分为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类型。
除了使用显式转换外,还可以使用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异常。