四舍五入取整小议 - c#

在C#中,使用Math.Round进行小数取整可能会遇到非预期结果,如32.50被转换为32。这是因为Math.Round采用的是银行家舍入法,即四舍六入五取偶。这种方法保证了舍入误差的平均分布,减少长期累计误差。文章探讨了银行家舍入的原理和为何选择这种舍入方式,并提供了测试数据以证明其行为。建议使用Decimal类型以获得更高精度。
摘要由CSDN通过智能技术生成

  在C#中,小数取整可以使用Math.Round(num, 0) 方法实现。

  一开始也没怎么在意,这能出什么差错?直到在做统计数据总数时,结果总不对,甚至还调出了计算器来求和。调试时才发现问题出现在 “32.50 的转换结果为 32”。这就纳闷了,不是“四舍五入”么?

  关于Math.Round,MSDN 上的文档说明: [ 舍入十进制值为指定数量的小数位数,并且舍入中心点值为最近的偶数 ],这样看来结果也算合理,可为什么要费尽周折地用最近的偶数?

XI 同学点出了其中的奥秘:[

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值