Я столкнулся с этой проблемой в своем проекте .NET Framework 4.8, но она также может быть воспроизведена в .NET 8 (https://learn.microsoft.com /en-us/dotnet/api/system.math.round?view=net-8.0#code-try-2).
Я столкнулся с этой проблемой в своем проекте [b].NET Framework 4.8[/b], но она также может быть воспроизведена в [b].NET 8[/b] (https://learn.microsoft.com /en-us/dotnet/api/system.math.round?view=net-8.0#code-try-2). [code]// incorrect rounding (double) Console.WriteLine(Math.Round(71.335, 2, MidpointRounding.AwayFromZero)); // 71.33 (must to be 71.34) Console.WriteLine(Math.Round(72.335, 2, MidpointRounding.AwayFromZero)); // 72.33 (must to be 72.34) Console.WriteLine(Math.Round(73.335, 2, MidpointRounding.AwayFromZero)); // 73.33 (must to be 73.34)
// correct rounding (decimal) which was incorrect for double Console.WriteLine(Math.Round(71.335M, 2, MidpointRounding.AwayFromZero)); // 71.34 Console.WriteLine(Math.Round(72.335M, 2, MidpointRounding.AwayFromZero)); // 72.34 Console.WriteLine(Math.Round(73.335M, 2, MidpointRounding.AwayFromZero)); // 73.34 [/code] Я не понимаю, в чем разница между 71.335, 72.335 и т. д. и 60.335, 83.335 и т. д. что приводит к тому, что Math.Round() ведет себя по-другому.