2012-03-28 1 views
0

Also ich laufen MySQL Version 5.1.4 und ich versuche, durch einen gerundeten Wert zu unterscheiden, und es funktioniert gut, außer dass es Zahlen wie 12,5 bis 12 Runden statt 13. Die Spalten, die ich probiert habe, sind alle vom Typ double. Ich habe ein wenig recherchiert und sah, dass das Standardverhalten die Hälfte der Rundenzahl ist, also frage ich mich, ob es eine Einstellung oder einen Parameter gibt, den ich ändern muss oder ob das gerade kaputt ist?MySQL ROUND-Funktion mit runden Half Down anstelle von Half Up

Hier ist meine Abfrage Referenz: DISTINCT ROUND (Radius) als Radius FROM arch WHERE Radius = '' ORDER BY radius ASC

Antwort

1

See wollen SELECT this. Die Umwandlung der radius Spalte in DECIMAL sollte das Problem lösen.

0

In MySQL für genaue Werttypen (DECIMAL, INT) verwendet halb-Runden (so 12.5 Runden zu 13).

Für ungefähre Typen (FLOAT, DOUBLE), MySQL wird typischerweise Einsatz rund die Hälfte sogar aka Banker Runden (12.5 Runden 12, während 13.5 Runden 14).

Um dies zu umgehen, können Sie 0.5 zu der Zahl hinzufügen, bevor Sie runden, oder konvertieren Sie Ihren ungefähren Werttyp zu DECIMAL.

0
SELECT DISTINCT ROUND(radius+0.1) as radius FROM arch WHERE radius != '' ORDER BY radius ASC 

Vielleicht reduzieren Sie den Modifikator bei Bedarf weiter.