Javascript 和 C# 舍入地狱

2024-04-04

如您所知,由于天才舍入规则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(使用前将#替换为@)

Javascript 和 C# 舍入地狱 的相关文章

随机推荐