Ich habe das folgende Codebeispiel:Konvertieren von float auf Dezimal, falsch Präzision zu verlieren
float val = 16777216.0F;
var badResult = Convert.ToDecimal(val);
//badResult has value 16777220
Warum diese Genauigkeit verloren geht? Der angegebene Wert ist 2^24, ein Wert, der float darstellen kann. Gibt es irgendwelche .net-Bibliotheken, die ich verwenden kann, um diese Konvertierung korrekt zu funktionieren, ohne meinen eigenen iCustomFormatter rollen zu müssen?
Danke!
bearbeiten, ist dies der hässliche Code, den ich als Lösung
var goodResult = Convert.ToDecimal(((double)val));
Wenn Sie mit Mathematik arbeiten, verwenden Sie Floats/Doubles den ganzen Weg. Wenn Sie mit Währungen arbeiten, verwenden Sie die Dezimalstellen vollständig. Warum müssten Sie zwischen ihnen konvertieren? –
siehe auch http://ideone.com/w1sTm –
@graham. Ich arbeite leider mit Returncodes von Hardware. – greggorob64