Я понимаю принцип, лежащий в основе этой проблемы, но мне больно думать, что это происходит во всем приложении, и мне нужно найти решение.
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
Я использую double для представления довольно маленьких чисел. Каким-то образом в расчете 141.1 - 35.275 двоичное представление результата дает число, которое составляет всего лишь 0,0000000000001. К сожалению, так как я тогда округляю это число, это дает неправильный ответ.
Я читал об использовании десятичных чисел вместо двойных, но я не могу заменить каждый экземпляр двойного числа десятичным. Есть ли какой-нибудь более простой способ обойти это?