Wie würde ich in MySQL auf die nächste Ganzzahl abrunden?
Beispiel: 12345.7344 rounds to 12345
Die round()
Funktion von mysql wird abgerundet .
Ich weiß nicht, wie lang die Werte oder die Dezimalstellen sein werden, könnte 10 Stellen mit 4 Dezimalstellen sein, könnte 2 Stellen mit 7 Dezimalstellen sein.
Antworten:
Verwenden Sie FLOOR :
SELECT FLOOR(your_field) FROM your_table
quelle
FLOOR()
Unterschied zwischen 2 Unterabfragen war (der Unterschied zwischen den Abfragen war -70,00). Haben Sie das jemals zuvor gesehen?Verwenden Sie FLOOR () , wenn Sie Ihre Dezimalstelle auf die untere Ganzzahl runden möchten . Beispiele:
Verwenden Sie ROUND () , wenn Sie Ihre Dezimalstelle auf die nächste Ganzzahl runden möchten . Beispiele:
Verwenden Sie CEIL () , wenn Sie Ihre Dezimalstelle auf die obere Ganzzahl runden möchten . Beispiele:
quelle
SELECT FLOOR(12345.7344);
Lesen Sie hier mehr .
quelle
SUBSTR
wird besser sein alsFLOOR
in einigen Fällen, weil FLOOR einen "Bug" wie folgt hat:SELECT 25 * 9.54 + 0.5 -> 239.00 SELECT FLOOR(25 * 9.54 + 0.5) -> 238 (oops!) SELECT SUBSTR((25*9.54+0.5),1,LOCATE('.',(25*9.54+0.5)) - 1) -> 239
quelle
Dies kann auf zwei Arten erfolgen:
select floor(desired_field_value) from table
select round(desired_field_value-0.5) from table
Die Erklärung für den zweiten Weg: Nehmen Sie eine Ganzzahl von 12345.7344 an. 12345.7344 - 0.5 = 12345.2344 und Abrundung des Ergebnisses ist 12345.
quelle
Versuche dies,
SELECT SUBSTR(12345.7344,1,LOCATE('.', 12345.7344) - 1)
oder
SELECT FLOOR(12345.7344)
SQLFiddle-Demo
quelle
Wenn Sie Dezimalstellen benötigen, können Sie diese verwenden
DECLARE @Num NUMERIC(18, 7) = 19.1471985 SELECT FLOOR(@Num * 10000) / 10000
Ausgabe: 19.147100 Löschen: 985 Hinzufügen: 00
ODER verwenden Sie diese:
SELECT SUBSTRING(CONVERT(VARCHAR, @Num), 1, CHARINDEX('.', @Num) + 4)
Ausgabe: 19.1471 Löschen: 985
quelle