it-swarm.com.de

Wie kann ich in MySQL auf die nächste ganze Zahl runden?

Wie würde ich auf die nächste ganze Zahl in MySQL aufrunden?

Beispiel: 12345.7344 rounds to 12345

die round()-Funktion von mysql fasst zusammen.

Ich weiß nicht, wie lang die Werte oder die Nachkommastellen sein werden, 10 Ziffern mit 4 Dezimalstellen, 2 Ziffern mit 7 Dezimalstellen. 

70
d-_-b

Verwenden Sie FLOOR :

SELECT FLOOR(your_field) FROM your_table
94
Jocelyn

Verwenden Sie FLOOR () , wenn Sie die Dezimalstelle auf die ganze Zahl lower runden möchten. Beispiele:

FLOOR(1.9) => 1
FLOOR(1.1) => 1

Verwenden Sie ROUND () , wenn Sie die Dezimalstelle auf die ganze Zahl near runden möchten. Beispiele:

ROUND(1.9) => 2
ROUND(1.1) => 1

Verwenden Sie CEIL () , wenn Sie Ihre Dezimalzahl auf die ganze Zahl upper runden möchten. Beispiele:

CEIL(1.9) => 2
CEIL(1.1) => 2
28
Black Shell

SUBSTR ist in manchen Fällen besser als FLOOR, da 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
4
Guest
SELECT FLOOR(12345.7344);

Lesen Sie mehr hier .

3
hjpotter92

Versuche dies,

SELECT SUBSTR(12345.7344,1,LOCATE('.', 12345.7344) - 1)

oder

SELECT FLOOR(12345.7344)

SQLFiddle Demo

1
John Woo

wenn Sie Dezimalzahlen 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 benutze das:

SELECT SUBSTRING(CONVERT(VARCHAR, @Num), 1, CHARINDEX('.', @Num) + 4)

Ausgabe: 19.1471 Löschen: 985

0
VolkanCetinkaya

Dies kann auf zwei Arten geschehen:

  • 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 ganze Zahl von 12345,7344 an. 12345.7344 - 0.5 = 12345.2344 und das Abrunden des Ergebnisses ergibt 12345.

0
Ananya Verma