C# 在13.694999998的情况下,Math.Round()是如何工作的?

C# 在13.694999998的情况下,Math.Round()是如何工作的?,c#,C#,在下面的代码片段中,我希望这两种情况下都是13.70,但我第一次得到13.69,第二次得到13.70 var d1 = Decimal.Round(13.694999999999999999999999998M, 2, MidpointRounding.AwayFromZero) var d2 = Decimal.Round(13.695000M, 2, MidpointRounding.AwayFromZero); 13.6949999999小于13.695,因此它将四舍五入到13.69 中

在下面的代码片段中,我希望这两种情况下都是13.70,但我第一次得到13.69,第二次得到13.70

var d1 = Decimal.Round(13.694999999999999999999999998M, 2, MidpointRounding.AwayFromZero)
var d2 = Decimal.Round(13.695000M, 2, MidpointRounding.AwayFromZero);
13.6949999999小于13.695,因此它将四舍五入到13.69

中点舍入.AwayFromZero在这种情况下不起作用

var d2 = Decimal.Round(13.695000M, 2, MidpointRounding.AwayFromZero);
13.695正好在13.69和13.70之间,因此舍入取决于中点舍入。从零开始舍入,结果是13.70(远离0)

期望四舍五入对低有效数字进行四舍五入,并使用这些值对高有效数字进行四舍五入是错误的。例如:

将13.69499999999转为13.695,然后将13.695转为13.70

13.6949999999小于13.695,因此它将四舍五入到13.69

中点舍入.AwayFromZero在这种情况下不起作用

var d2 = Decimal.Round(13.695000M, 2, MidpointRounding.AwayFromZero);
13.695正好在13.69和13.70之间,因此舍入取决于中点舍入。从零开始舍入,结果是13.70(远离0)

期望四舍五入对低有效数字进行四舍五入,并使用这些值对高有效数字进行四舍五入是错误的。例如:


第13.69499999999轮到13.695轮,然后第13.695轮到13.70轮。。有什么办法可以做到这一点吗?你检查过了吗?我预计这两个项目的结果都是13.70分。。有什么办法可以做到这一点吗?你检查过了吗?谢谢,我知道了。谢谢,我知道了。