web-dev-qa-db-fra.com

Comment arrondir au nombre entier le plus proche dans MySQL?

Comment pourrais-je arrondir à l'entier le plus proche dans MySQL?

Exemple: 12345.7344 rounds to 12345

la fonction round() de mysql est arrondie.

Je ne sais pas combien de temps les valeurs ni les décimales seront, pourrait être 10 chiffres avec 4 décimales, pourrait être 2 chiffres avec 7 décimales. 

70
d-_-b

Utilisez FLOOR :

SELECT FLOOR(your_field) FROM your_table
94
Jocelyn

Utilisez FLOOR () , si vous souhaitez arrondir votre nombre décimal à l’entier lower. Exemples:

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

Utilisez ROUND () , si vous souhaitez arrondir votre virgule à l'entier le plus proche. Exemples:

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

Utilisez CEIL () , si vous souhaitez arrondir votre nombre décimal à l’entier upper. Exemples:

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

SUBSTR sera mieux que FLOOR dans certains cas car FLOOR a un "bogue" comme suit:

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);

Lire plus ici .

3
hjpotter92

Essaye ça,

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

ou

SELECT FLOOR(12345.7344)

Demo SQLFiddle

1
John Woo

si vous avez besoin de décimales, vous pouvez utiliser ceci

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

Sortie: 19.147100 Effacer: 985 Ajouter: 00

OU utilisez ceci:

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

Sortie: 19.1471 Clair: 985.

0
VolkanCetinkaya

Cela peut être fait de deux manières:

  • select floor(desired_field_value) from table
  • select round(desired_field_value-0.5) from table

La seconde explication: Supposons un entier de 12345.7344. Donc, 12345.7344 - 0.5 = 12345.2344 et le résultat sera arrondi à 12345.

0
Ananya Verma