mysql - suchmaschinen - title tag definition



Wie wird auf die nächste ganze Zahl in MySQL abgerundet? (4)

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

Beispiel: 12345.7344 rounds to 12345

Die Funktion round() mysql wird round() .

Ich weiß nicht, wie lange die Werte noch die Nachkommastellen sein werden, könnte 10 Ziffern mit 4 Dezimalstellen sein, könnte 2 Ziffern mit 7 Dezimalstellen sein.

https://src-bin.com


Answer #1

Versuche dies,

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

oder

SELECT FLOOR(12345.7344)

SQLFiddle-Demo


Answer #2

Verwenden Sie FLOOR , wenn Sie Ihre Dezimalzahl auf die untere Ganzzahl runden möchten. Beispiele:

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

Verwenden Sie ROUND() , wenn Sie Ihre Dezimalzahl auf die nächste Ganzzahl runden möchten. Beispiele:

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

Verwenden Sie CEIL() , wenn Sie Ihre Dezimalzahl auf die obere Ganzzahl runden möchten. Beispiele:

CEIL(1.9) => 2
CEIL(1.1) => 2

Answer #3

Wenn Sie Dezimalstellen benötigen, können Sie dies verwenden

DECLARE @Num NUMERIC(18, 7) = 19.1471985
SELECT FLOOR(@Num * 10000) / 10000

Ausgabe: 19.147100 Löschen: 985 Hinzufügen: 00

ODER benutze dies:

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

Ausgabe: 19.1471 Löschen: 985


Answer #4

SUBSTR wird in manchen Fällen besser als FLOOR 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




rounding