如您所知,由于天才舍入规则C#
我们得到以下值:
decimal d = 2.155M;
var r = Math.Round(d, 2); //2.16
decimal d = 2.145M;
var r = Math.Round(d, 2); //2.14
现在在客户端Javascript
我正进入(状态:
2.155.toFixed(2)
"2.15"
2.145.toFixed(2)
"2.15"
kendo.toString(2.155, 'n2')
"2.16"
kendo.toString(2.145, 'n2')
"2.15"
但我在后端进行的验证因此而失败。遇到这种情况,正确的处理方法是什么呢?我怎样才能同步C#
and Javascript
四舍五入以确保它们都四舍五入到相同的值?
有一个C# 的 Math.Round 中的重载 https://msdn.microsoft.com/library/ms131275(v=vs.110).aspx接受一个指示符来确定当数字介于其他两个数字之间时如何舍入。例如。 MidPoint Even 将 0.5 舍入为零,因为零是最接近的偶数:
decimal d = 2.155M;
var r = Math.Round(d, 2, MidPointRounding.AwayFromZero); //2.16
decimal d = 2.145M;
var r = Math.Round(d, 2, MidPointRounding.AwayFromZero); //2.15
按照默认MidPointToEven
使用您的数字将始终四舍五入到最接近的even数字。你会得到这些结果:
2.155 --> 2.16
2.145 --> 2.14
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)