var ist kein Typ der "sich ändern lässt“ sondern eine Anweisung für "der Compiler soll den Typ hier einmalig ableiten". Der Compiler macht aus
var fValueDest = 0.0;
ein Double daraus.
double fValueDest = 0.0;
Ab da ist fValueDest für immer ein double (zur Compile-Zeit). decimal -> double wird in C# nicht implizit konvertiert (nur explizit), weil das potentiell Genauigkeit verliert. Wenn du z.B
fValueDest = (double)(decimal)objectValueDest;
machst. Ein decimal ist genauer als ein Double deshalb geht bei der Konvertierung Genauigkeit verloren. Besser wäre alles als decimal zu initialisieren.
decimal fValueDest = 0m;
decimal fValueSource = 0m;
decimal fResult = 0m;
und danach konsequent nach decimal konvertieren.
fValueDest = Convert.ToDecimal(objectValueDest);
fValueSource = Convert.ToDecimal(objectValueSource);