记录使用C#编程中遇到的一个小bug
近期在写程序时使用NumericUpDown进行一个整数的输入。如果用户输入小数NumericUpDown会自动四舍五入成整数显示在界面但是实际的value还是用户输入的实际值。我在处理这个数据时使用了Convert.ToInt32()对输入的值进行了转换。出现了一个神奇的问题如果用户输入2.5界面上显示的是3关闭界面后重新打开界面这个数就变成了2。原因是Convert.ToInt32()处理小数的原则是“奇进偶不进”后面我改用Math.Round()函数解决了这个问题这个函数默认也是“奇进偶不进”需要将进位方式通过 MidpointRounding 设置为AwayFromZero。Tips银行家舍入法奇进偶不进的核心优势在于统计无偏性当处理大量以0.5结尾的数据时传统四舍五入会系统性向上舍入产生累积正偏差而银行家舍入让0.5有时进有时舍取决于前一位数字的奇偶性从而使整体误差趋近于零因此被广泛应用于金融、科学计算和数据库系统中以避免数据漂移。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2558758.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!