У меня проблемы с проблемой округления в C#. Я хотел бы округлить результат вычисления до 4 десятичных знаков (awayfromzero). Если я использую Math.Round (переменная, ...), он округляется вниз, если я введу результат вручную, он округляется. Я понятия не имею, почему ..Ошибка округления в C#?
Что я делаю неправильно? Результат ниже код: Округлые: 591,24575 591,2457 - 591,2458
double number1 = 1136.81;
double number2 = 4.00;
double number3 = 2182.257;
double result = (number1 * number2 - number3)/4;
Console.WriteLine("Rounded: " +result+" " + Math.Round(result, 4, MidpointRounding.AwayFromZero) + " - " + Math.Round(591.24575, 4, MidpointRounding.AwayFromZero));
Console.ReadLine();
потому что 'double' - это двоичный тип данных с плавающей точкой, который не является 100% точным при преобразовании в/из чисел base-10 (с использованием' Round', 'Floor' и т. Д.). Используйте 'decimal', если вам нужна точность base-10. –
Всегда завораживает меня, что предположение о том, что в каркасе или в C# есть ошибка, когда что-то не работает, как кто-то ожидает. –
@ DanielKelley Чтобы быть справедливым, пользователь действительно сказал: «Что я * делаю неправильно?» – LarsTech