2012-11-29 13 views
5

Ich möchte meine Werte als FLOATS speichern, aber beim Abrufen kann der Benutzer angeben (und zur Laufzeit ändern), wie viele Ziffern er nach dem Dezimalpunkt sehen möchte.WÄHLEN Sie einen FLOAT mit gegebener Genauigkeit

Kann ich das in meinem SELECT irgendwie weitergeben, oder muss ich es in meiner Anwendung tun?

Antwort

8

Ja, geben Sie einfach den zweiten Parameter für ROUND()

SELECT ROUND(23.298, <precision>); 

Damit Sie die Anzahl der Stellen angeben können Sie erhalten zurück möchten. (Sie können sogar negative Werte haben, in diesem Fall wird die Eingabe auf 10 (-precision) gerundet).

Oder könnten Sie CAST als DECIMAL:

CAST(2.5 AS DECIMAL(20,2)) 

(Anmerkung: diese letztere auch mit Texteingaben funktionieren würde, wie CAST('2.5' AS DECIMAL(20,2)), aber in diesem Fall geht es um FLOAT Eingänge)

4

Verwendung ROUND() , CEIL() oder FLOOR(), um dasselbe zu tun und den Wert des zweiten Arguments vom Benutzer als Eingabe zu erhalten.

+0

+1, ich habe total über CEIL und FLOOR vergessen! – ppeterka