Я понимаю принцип этой проблемы, но у меня болит голова, когда я думаю, что это происходит во всем моем приложении, и мне нужно найти решение.
double Value = 141.1;
double Discount = 25.0;
double disc = Value * Discount / 100; // disc = 35.275
Value -= disc; // Value = 105.824999999999999
Value = Functions.Round(Value, 2); // Value = 105.82
Я использую удвоения для представления довольно небольших чисел. Каким-то образом при вычислении 141,1 - 35,275 двоичное представление результата дает число, которое составляет всего 0,00000000000001. К сожалению, поскольку я затем округляю это число, это дает неправильный ответ.
Я читал об использовании Decimals вместо Doubles, но я не могу заменить каждый экземпляр Double на Decimal. Есть ли более простой способ обойти это?