C # Maths dá resultados errados!

Entendo o princípio por trás desse problema, mas está me dando dor de cabeça pensar que isso está acontecendo em todo o meu aplicativo e preciso encontrar como solução.

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

Estou usando o dobro para representar números muito pequenos. De alguma forma, no cálculo 141.1 - 35.275, a representação binária do resultado fornece um número que é apenas 0.0000000000001. Infelizmente, como estou arredondando esse número, isso dá a resposta errada.

Eu li sobre o uso de decimais em vez de duplos, mas não posso substituir todas as instâncias de um duplo por um decimal. Existe alguma maneira mais fácil de contornar isso?

questionAnswers(4)

yourAnswerToTheQuestion