Bonjour,

Dans le cadre un projet de boutique en ligne, je dois réaliser des calculs avec comme base un prix d'achat et un prix ttc. A chaque affichage je dois recalculer le prix HT, mais certains resultats + certaines promotions m'affiche des résultats XX.955 ou XX.455 mais qui se termine en XX.96 et XX.46 se qui fause le résultat en utilisant à la fin uniquement

$ttc = 0;

for( bla bla ) {
$ttc += $price_ttc
}

$total_ttc = round( 00.955, 2 );

// 00.96 au lien de 00.95

Le problème c'est que l'utilisation de PHP_ROUND_HALF_UP ou PHP_ROUND_HALF_DOWN ne semble pas être la solution...

5 réponses


Je ne comprend pas ton souci. Il y a aucune règle disant que ça doit être arrondie à l'unité supérieur ou inférieur, c'est au libre arbitre de la personne (programme ?) qui calcule. Dans le cadre d'un calcule financier, il est d'usage d'arrondir à l'unité supérieur.

Suivant cette logique, le résultat de round me semble approrié.

Si tu arrondit au nombre supérieur tu es sûr de ne pas perdre d'argent non? :)

imars
Auteur

Merci de vos retours, donc il y a bien un choix délibérer d'arrondir au dessus, le fait d'avoir la possibilité d'arrondir au dessus ou en dessous dans le doc de php m'a mis le doute sur le bon resultats à mettre.

Pour info Prestashop propose 6 modes d'arrondis possibles :

Arrondir vers l'infini quand valeur à mi-chemin. C'est le mode recommandé. 42,55555555 devient 42,56.
Arrondir vers zéro quand valeur à mi-chemin. 42,55555555 devient 42,56.
Arrondir au chiffre pair le plus proche (arrondi bancaire). 42,55555555 devient 42,56.
Arrondir au chiffre impair le plus proche. 42,55555555 devient 42,56.
Arrondir à la valeur supérieure la plus proche. 42,55555555 devient 42,56.
Arrondir à la valeur inférieure la plus proche. 42,55555555 devient 42,56.
```

L'intérêt c'est de coller avec celui de son ERP car les commandes il faut bien les passer dans l'ERP puis la Compta
imars
Auteur

Merci #Huggy et autres j'étais dans une grosse confusion mais maintenant c'est plus clair !!!