如何将小数转换为整型?
当前回答
我发现强制转换操作符不工作,如果你有一个盒装小数(即一个对象类型内的十进制值)。转换。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()工作吗?
使用转换。从mscorlib中的ToInt32
decimal value = 3.14m;
int n = Convert.ToInt32(value);
看到MSDN。你也可以使用Decimal.ToInt32。同样,请参见MSDN。最后,你可以直接转换为
decimal value = 3.14m;
int n = (int) value;
它使用显式强制转换操作符。看到MSDN。
十进制d = 5.5;
int i = decimal.ToInt32(d);// you will get i = 5
参考:链接文本
将十进制转换为整数
decimal decimalValue=5.00;
int intValue=Convert.ToInt32(decimalValue);
int i = (int)d;
会给你四舍五入的数字。
如果你想四舍五入到最接近的偶数(即>。5将围捕)你可以使用
int i = (int)Math.Round(d, MidpointRounding.ToEven);
一般来说,在c#中可以在所有数值类型之间进行强制转换。如果转换过程中没有丢失信息,可以隐式执行:
int i = 10;
decimal d = i;
尽管你仍然可以明确地这样做,如果你愿意:
int i = 10;
decimal d = (decimal)i;
然而,如果你要通过强制转换丢失信息,你必须明确地这样做(以表明你意识到你可能会丢失信息):
decimal d = 10.5M;
int i = (int)d;
这里你把"。5"丢掉了。这可能很好,但您必须明确它并进行明确的强制转换,以表明您知道您可能会丢失信息。
推荐文章
- 实体框架核心:在上一个操作完成之前,在此上下文中开始的第二个操作
- 如何为构造函数定制Visual Studio的私有字段生成快捷方式?
- 为什么Visual Studio 2015/2017/2019测试运行器没有发现我的xUnit v2测试
- 如何使用JSON确保字符串是有效的JSON。网
- AppSettings从.config文件中获取值
- 通过HttpClient向REST API发布一个空体
- 如何检查IEnumerable是否为空或空?
- 自动化invokerrequired代码模式
- 没有ListBox。SelectionMode="None",是否有其他方法禁用列表框中的选择?
- 在c#代码中设置WPF文本框的背景颜色
- 在c#中,什么是单子?
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 如何舍入一个双到最近的Int在迅速?
- c#线程安全快速(est)计数器
- 如何将此foreach代码转换为Parallel.ForEach?