如何将小数转换为整型?


当前回答

decimal vIn = 0.0M;
int vOut = Convert.ToInt32(vIn);

这是一个非常方便的转换数据类型的网页,为那些其他人。 http://www.convertdatatypes.com/Convert-decimal-to-int-in-CSharp.html

其他回答

使用转换。从mscorlib中的ToInt32

decimal value = 3.14m;
int n = Convert.ToInt32(value);

看到MSDN。你也可以使用Decimal.ToInt32。同样,请参见MSDN。最后,你可以直接转换为

decimal value = 3.14m;
int n = (int) value;

它使用显式强制转换操作符。看到MSDN。

我更喜欢用数学。圆的,数学。地板上,数学。天花板或数学。截断以显式地设置适当的舍入模式。

注意,它们也都返回Decimal——因为Decimal的值范围比Int32大,所以您仍然需要强制转换(并检查溢出/下溢)。

 checked {
   int i = (int)Math.Floor(d);
 }

快速舍入的一个巧妙技巧是在将小数点转换为整型之前加上。5。

decimal d = 10.1m;
d += .5m;
int i = (int)d;

仍然保留i=10,但是

decimal d = 10.5m;
d += .5m;
int i = (int)d;

四舍五入,使i=11。

没有答案似乎处理OverflowException/UnderflowException来自试图转换int范围之外的小数。

int intValue = (int)Math.Max(int.MinValue, Math.Min(int.MaxValue, decimalValue));

如果十进制值在int范围之外,此解决方案将返回可能的最大或最小int值。你可能想用Math添加一些舍入。圆的,数学。天花板或数学。当值在int范围内时的下限。

将十进制转换为整数

decimal decimalValue=5.00;
int intValue=Convert.ToInt32(decimalValue);