我有一个MVC3 C#.Net网络应用程序。计算的结果是158 * 1.75 = 276.5。我希望这个数字可以达到277.我正在使用Math.Round,但它下降了。我知道我在某个地方见过这个问题。什么是解决方案?在C#中舍入。净
在C#中舍入。净
回答
使用overload,需要一个MidpointRounding
Math.Round(276.5, MidpointRounding.AwayFromZero);
+1来补偿。 – NominSim
有趣的是,如果使用格式字符串将数字转换为带小数点零的字符串表示形式,即'string output =(276.5).ToString(“F0”);',那么离开 - 零规则也被使用。我不认为在字符串格式化数字时,甚至会使用to-even规则。 –
+1 ...... dup也覆盖了所有的情况。 –
用途:
Math.Round(value, MidpointRounding.AwayFromZero);
.NET使用银行家的舍入默认;它将以5结尾的值舍入到最接近的偶数有效数字中,而不总是上升(称为“语义算术舍入”)。原因在于,如果你围绕一堆随机十进制数然后求和它们,当使用银行家舍入时,该总和将接近未被接通的数的总和,而不是算术舍入数的总和。
要强制使用等级学校的四舍五入规则,使用过载接受MidpointROunding枚举值:
Math.Round(myNumber, MidpointRounding.AwayFromZero);
如前所述,您可以使用Math.Round(d, MidpointRounding.AwayFromZero)
。
默认情况下,.NET使用所谓的bankers rounding(或MidpointRounding.ToEven
)
- 1. 在C中舍入double值#
- 2. C++ printf舍入?
- 3. C中的舍入函数
- 4. c#中的舍入bug?
- 5. 舍入到即使在C#
- 6. 舍入误差在C++
- 7. 在Oracle中的舍入舍入
- 8. C++舍入问题
- 9. 在C++中舍入而不溢出
- 10. 在C中的十进制舍入#
- 11. 在Objective-C中四舍五入数字
- 12. 如何在C++中舍入小数位?
- 13. 如何在c#中舍入float值?
- 14. 在C中匹配FORTRAN舍入#
- 15. 在C中不同情况舍入或舍弃小数点#
- 16. 在Silverlight中舍入
- 17. 在PLSQL中舍入
- 18. 在Python中舍入。
- 19. 在PHP中舍入
- 20. 在Excel中舍入
- 21. 在星火下舍入双舍入
- 22. 不需要的舍入C++
- 23. C#和XSLT舍入差异
- 24. C++ ATOF/_wtof,舍入误差
- 25. C#舍入MidpointRounding.ToEven vs MidpointRounding.AwayFromZero
- 26. C++舍入随机双
- 27. 舍入C预处理器
- 28. C++双舍入问题
- 29. C#浮点舍入行为
- 30. BigDecimal舍入不舍入
请参考这个问题: http://stackoverflow.com/questions/977796/in-c-math-round2-5-结果是2,而不是3,你在开玩笑,我 –