Kann mir bitte jemand helfen mit diesem Problem?Dezimal zu Float Konvertierungsproblem in C#
Ich habe in der Datenbank eine Nullable "echte" Spalte, die Entity Framework als "float?"
Das System führt einige Berechnungen im Dezimalformat durch, aber wenn der Wert in dieser Spalte zugewiesen wird, geht die Genauigkeit verloren.
Das System der nächsten Umwandlung verwendet:
dbObject.floatCol = (float) decimalVar;
decimalVar ist = 123,12341
aber dbObject.floatCol ist = 123,1234
ich versucht, diese convertion auf andere Weise zu tun, ohne Glück .
HINWEISE:
- In der Datenbank ich den Wert auf 123,12341 problemlos aktualisieren können. Ich bin mit Visual Studio 2010 mit .NET Framework
- Ich kann die Datenbank der Spalte
- nicht ändern 4
EDIT:
Wenn ich debuggen das Problem (mit den reellen Zahlen meiner Ausgabe) ich habe:
decimal decimalVar = new decimal(123.13561);
// decimalVar is 123.13561
float? floatVar = 0;
// floatVar is 0
floatVar = (float)decimalVar;
// floatVar is 123.135612 <- has appeared a 2 at the end
// with a different decimal number
decimalVar = new decimal(128.13561); // replaced the 123 for 128
// decimalVar is 128.13561
floatVar = (float)decimalVar;
// floatVar is 128.1356 <- has disappeared the 1 at the end
Das Verhalten ist wirklich seltsam
ich wissen muss, wenn möglich, eine korrekte Konvertierung
zu tun, wenn ich zu p versuchen rint die Werte zu Console oder Logfile sie sind unterschiedlich: s
Die Typzuordnung zwischen C# und SQL Server finden Sie [hier] (https://msdn.microsoft.com/en-us/library/cc716729 (v = VS.100) .aspx) –