c#_类型转换

Math.Round这个函数的解释是将值按指定的小数位数舍入,并不就是四舍五入。这种舍入有时称为就近舍入或四舍六入五成双

C# code
Math.Round(0.4)  //result:0 
Math.Round(0.6)  //result:1 
Math.Round(0.5)  //result:0 
Math.Round(1.5)  //result:2 
Math.Round(2.5)  //result:2 
Math.Round(3.5)  //result:4 
Math.Round(5.5)  //result:6 
Math.Round(6.5)  //result:6 
Math.Round(8.5)  //result:8 
Math.Round(9.5)  //result:10

可以看出 并不是四舍五入的
其实在 VB, VBScript, C#, J#, T-SQL 中 Round 函数都是采用 Banker's rounding(银行家舍入)算法,即四舍六入五取偶事实上这也是 IEEE 规定的舍入标准。因此所有符合 IEEE 标准的语言都应该是采用这一算法的。

请调用 Math.Round(Decimal, MidpointRounding) 重载!~哦,原来还有重载的方法可用,MidpointRounding在两个数字之间时如何舍入的规范,规范MidpointRounding中它有2个成员,一个是ToEven还有个是AwayFromZero。

C# code
//四舍五入  
Math.Round(0.5,MidpointRounding.AwayFromZero)

1. (int )double

2. convert.toInt32(object),object可能为string

3. int.parse(string)

Note:

Convert.ToInt32(null)会返回0而不会产生任何异常,但int.Parse(null)则 会产生异常。
Convert.ToInt32(double value),使用的上边的银行家舍入算法
(int )double,直接是强制转换(即截取整数部分)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • explicit与类型运算符 背景 类类型转换 类型转换分类 隐式类型转换/系统转换 数值类型从低精度到高精度的转...
    jdzhangxin阅读 2,860评论 0 0
  • C++的类型转换分为隐式转换和显式转换 隐式转换举例: int i=4; double d=i;//隐式转换 显式...
    dengqiong阅读 3,736评论 0 51
  • 这篇介绍C++的4种类型转换 dynamic_cast, static_cast, reinterpret_cas...
    CodingCode阅读 3,362评论 0 0
  • C++ 一共有4种类型转换方式,分别是: static_cast,dynamic_cast,const_cast,...
    wayyyy阅读 3,169评论 0 0
  • 最近在网上看到了一个C++类型转换判断的高效实现,分享出来共同学习。作者使用了sizeof关键词、函数重载与可变参...
    ColeWang阅读 4,262评论 0 1