如何将小数转换为整型?
当前回答
我发现强制转换操作符不工作,如果你有一个盒装小数(即一个对象类型内的十进制值)。转换。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——因为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 decimalValue=5.00;
int intValue=Convert.ToInt32(decimalValue);
使用转换。从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 a ;
int b = (int)(a + 0.5m);
当a = 49.9时,b = 50
当a = 49.5时,b = 50
当a = 49.4时,b = 49,以此类推。
推荐文章
- .Net HttpWebRequest.GetResponse()在返回http状态码400(坏请求)时引发异常
- 在using块的中间返回
- 找到未使用的代码
- 是什么让Visual Studio调试器停止评估ToString重写?
- ContentControl和ContentPresenter有什么区别?
- 一个字符串的字符串列表
- 无法确定条件表达式的类型,因为'int'和<null>之间没有隐式转换
- 从实体框架中删除单个记录?
- 创建一个完成的任务
- 字典的字面符号在c# ?
- 随机字符串生成器返回相同的字符串
- 为什么Func<T,bool>而不是Predicate<T>?
- .NET中的Map和Reduce
- 我如何能使一个组合框不可编辑的。net ?
- .NET反射的成本有多高?