Ich habe einige Probleme mit der Konvertierung einiger Daten, die in einem FLOAT-Datentyp gespeichert sind, in Daten, die in einem INT-Datentyp gespeichert sind. Das folgende Beispiel veranschaulicht mein Problem:
%Vor% Die gewünschten Ergebnisse wären: ID = 1 VALUE = 15662
Wenn ich jedoch von der Tabelle @data
komme, scheint das nicht zu funktionieren. Ich bekomme stattdessen ID = 1 VALUE = 15661.
Hat jemand eine Idee warum das so ist? Ich vermute, es ist eine Art Float Nuance. Aber ich hätte nie gedacht, dass es ein Problem mit etwas wie dem oben genannten hätte. Irgendwelche Ideen? Vielen Dank im Voraus für Ihre Hilfe.
Dies ist das klassische (int) ((0.1 + 0.7) * 10) Problem. Da Floats eine beliebige Genauigkeit haben, ist ein Datenverlust bei der Umwandlung in int selbst für sehr einfache Fälle möglich.
Verwenden Sie stattdessen ROUND(weight * 1000000.0, 0)
.
Tags und Links sql integer floating-point casting