gpt4 book ai didi

Javascript 和 C# 舍入 hell

转载 作者:太空宇宙 更新时间:2023-11-03 17:30:06 24 4
gpt4 key购买 nike

如您所知,由于 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#Javascript 舍入以确保它们都舍入到相同的值?

最佳答案

有一个 overload in C#´s Math.Round接受一个指标来确定当数字在其他两个数字中间时如何舍入。例如。 MidPointToEven 将 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,您的数字将始终四舍五入到最接近的偶数 数字。你会得到这些结果:

2.155 --> 2.16
2.145 --> 2.14

关于Javascript 和 C# 舍入 hell ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44716347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com