Math.Round的疑惑 Math.Round(new decimal(34.965), 2);输出:34.96 Math.Round(34.965, 2);输出:34.97为什么输出结果不一样! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在哪里看到过,.net的 round()不是四舍五入 C# 中没有四舍五入函数,事实上我知道的程序语言都没有四舍五入函数,因为四舍五入算法不科学,国际通行的是 Banker 舍入法Banker's rounding(银行家舍入)算法,即四舍六入五取偶。事实上这也是 IEEE 规定的舍入标准。因此所有符合 IEEE 标准的语言都应该是采用这一算法的 这个原因很简单,因为计算机中的数是用二进制存放的,所以表示小数时,精度是不准的,假如是0.1,那在计算机中可能是:0.10000001 或者 0.0999999999 的样子,你把数在 float 与 decimal 之间转换,可能就发生了变化了。 这个跟double.Round的具体实现有关。Math.Round(34.965, 2)在内部计算的时候,先乘与100,然后再四舍五入。但是由于浮点误差,34.965 * 100 得到的是3496.5000000000005。略大于0.5,于是向上取整。而decimal是用整数来表现的。比如34965,3(其中3表示几个小数)可以用来表示34.965。这种情况,就没有必要再乘100了,直接调整小数位然后取整,结果就是.Net默认的向偶数取整。 上网本能运行VS2005+sql2005吗?有谁用过?? winform弹出的ie页面时怎么去掉标准按钮、菜单栏、地址栏等?? Random() 溢出怎么办 调用存储过程之后还要更新,怎样使用事务 请问如何设置属性可以使生成页面时是页面最大化显示? visual C#与c#到底什么区别 如何获得字符串A在字符串B中的第n个匹配项的索引? 用c#制作个小东西。。求解完整代码 菜鸟请教数据库问题 比较经典的讲述API的书是哪几本? .net的打印在哪里? 怎么 让 WPF 窗体的运行的结果在桌面的制定的位置?
但是由于浮点误差,34.965 * 100 得到的是3496.5000000000005。略大于0.5,于是向上取整。而decimal是用整数来表现的。比如34965,3(其中3表示几个小数)可以用来表示34.965。
这种情况,就没有必要再乘100了,直接调整小数位然后取整,结果就是.Net默认的向偶数取整。