如何将小数转换为整型?
当前回答
系统。Decimal实现了IConvertable接口,该接口有一个ToInt32()成员。
调用System.Decimal.ToInt32()工作吗?
其他回答
我更喜欢用数学。圆的,数学。地板上,数学。天花板或数学。截断以显式地设置适当的舍入模式。
注意,它们也都返回Decimal——因为Decimal的值范围比Int32大,所以您仍然需要强制转换(并检查溢出/下溢)。
checked {
int i = (int)Math.Floor(d);
}
我发现强制转换操作符不工作,如果你有一个盒装小数(即一个对象类型内的十进制值)。转换。ToInt32(作为对象的十进制)在这种情况下工作正常。
当从数据库中检索IDENTITY/ autoumber值时出现这种情况:
SqlCommand foo = new SqlCommand("INSERT INTO...; SELECT SCOPE_IDENTITY()", conn);
int ID = Convert.ToInt32(foo.ExecuteScalar()); // works
int ID = (int)foo.ExecuteScalar(); // throws InvalidCastException
参见4.3.2开箱转换
系统。Decimal实现了IConvertable接口,该接口有一个ToInt32()成员。
调用System.Decimal.ToInt32()工作吗?
十进制d = 5.5;
int i = decimal.ToInt32(d);// you will get i = 5
参考:链接文本
使用转换。从mscorlib中的ToInt32
decimal value = 3.14m;
int n = Convert.ToInt32(value);
看到MSDN。你也可以使用Decimal.ToInt32。同样,请参见MSDN。最后,你可以直接转换为
decimal value = 3.14m;
int n = (int) value;
它使用显式强制转换操作符。看到MSDN。