augmenter et arrondir des prix

Invité
Invité n'ayant pas de compte PHPfrance

29 déc. 2006, 14:14

Bonjour à tous

Je voudrais augmenter tous les prix d'un catalogue de 2 %...
mais surtout je voudrais arrondir les prix aux 10 cts le plus proche.

Par exemple si mon prix augmenté fait : 8,75 il faut l'arrondir à 8,70 mais si c'est 8,76 ce sera 8,80.

Pour l'augmentation je pense savoir ce qu'il faut faire :

Code : Tout sélectionner

UPDATE catalogue SET prix = prix*1.02
Mais pour l'arrondi...

Merci de votre aide

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

29 déc. 2006, 14:17

Salut,

tu as fais une recherche sur le forum ? Avec "arrondir" tu devrais bien trouver quelque chose...

Sinon, regarde dans la doc MySQL, tout ça c'est dans les fonctions mathématiques généralement

ViPHP
ViPHP | 1961 Messages

29 déc. 2006, 14:29

Bonjour,

MySQL possède bien une fonction ROUND() mais elle n'arrondit pas comme tu le souhaites.

Dans le cas du .5 si le nombre est positif ce sera le supérieur, si négatif l'inférieur.
Dans tous les autres cas ça te conviendrait.

Sinon il te reste la solution PHP.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Invité
Invité n'ayant pas de compte PHPfrance

29 déc. 2006, 14:33

Merci pour vos réponses

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

29 déc. 2006, 15:35

Pour arrondir au dixième d'euro (= 10 centimes) supérieur :
$new = (ceil(10 * ($old * 1.02)))/10;

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

29 déc. 2006, 15:40

Petit inconvénient :
3,73 majoré de 2% sera arrondi à 3,9 pour une valeur réelle de 3,8046.

À toi de voir...
Modifié en dernier par albat le 29 déc. 2006, 15:41, modifié 1 fois.

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

29 déc. 2006, 15:41

...ou la même chose (ou presque) en SQL. Arrondir au dixième d'euro, selon les règles universelles d'arrondi

Code : Tout sélectionner

UPDATE table SET prix = ROUND(prix * 10) / 10
...ce qui arrondira 8.74 à 8.70 et 8.75 à 8.80. Si tes règles sont d'arrondir ce dernier à 8.70 tu dois pouvoir faire quelque chose comme

Code : Tout sélectionner

UPDATE table SET prix = ROUND((prix - 0.01) * 10) / 10
À tester avant usage, bien évidemment.