如何将小数转换为整型?
当前回答
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"丢掉了。这可能很好,但您必须明确它并进行明确的强制转换,以表明您知道您可能会丢失信息。
其他回答
将十进制转换为整数
decimal decimalValue=5.00;
int intValue=Convert.ToInt32(decimalValue);
decimal d = 2;
int i = (int) d;
这应该可以正常工作。
系统。Decimal实现了IConvertable接口,该接口有一个ToInt32()成员。
调用System.Decimal.ToInt32()工作吗?
快速舍入的一个巧妙技巧是在将小数点转换为整型之前加上。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。
四舍五入小数到最接近的整数
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反射的成本有多高?