Donc, "10.222" sera tronqué à "10.22", ce qui est un arrondit violent.
Si c'est un montant (monétaire) final (et pas un intermédiaire de calcul), sur une monnaie comme l'euro, la troisième décimale et toutes celles au-delà n'ont pas d'existence réelle. D'ailleurs il y a des règles officielles pour arrondir si les calculs donnent un montant à plus de 2 décimales (de mémoire : partie décimale < 0,5 --> inférieur, partie décimale >= 0,5 --> supérieur).
Du coup dans ton cas il n'y a pas réellement de « arrondit violent » : c'est le résultat du calcul qui donne bien, selon les règles de la finance, 10.22 et non 10.222.
D'une manière générale, c'est aussi un domaine où on a besoin autant que faire ce peut de valeurs exactes et pas « avec des approximations qu'on peut normaliser » sur toutes les valeurs finales. D'expérience, pour avoir bossé quelques années dans le e-commerce, utiliser des double au lieu de décimale fixe t'expose à deux types de blagues :
Tu as des erreurs de re-normalisation qui ne se compensent pas (par exemple tu produits un ticket avec HT et TVA qui ne font pas TTC, à 1 ou 2 centimes prêt).
Tu obtiens des arrondis (sur le site web par exemple) qui ne collent pas avec ceux du SI financier et qui foutent la merde dans les calculs.
Utiliser correctement les outils basés sur des décimales fixes permettent d'éviter ces écueils, même si c'est généralement lourd et chiant à faire.
# Un retour d'expérience
Posté par SpaceFox (site web personnel, Mastodon) . En réponse au journal SQL Decimal vs Double. Évalué à 10.
Je pense que toute l'astuce est là :
Si c'est un montant (monétaire) final (et pas un intermédiaire de calcul), sur une monnaie comme l'euro, la troisième décimale et toutes celles au-delà n'ont pas d'existence réelle. D'ailleurs il y a des règles officielles pour arrondir si les calculs donnent un montant à plus de 2 décimales (de mémoire : partie décimale < 0,5 --> inférieur, partie décimale >= 0,5 --> supérieur).
Du coup dans ton cas il n'y a pas réellement de « arrondit violent » : c'est le résultat du calcul qui donne bien, selon les règles de la finance, 10.22 et non 10.222.
D'une manière générale, c'est aussi un domaine où on a besoin autant que faire ce peut de valeurs exactes et pas « avec des approximations qu'on peut normaliser » sur toutes les valeurs finales. D'expérience, pour avoir bossé quelques années dans le e-commerce, utiliser des double au lieu de décimale fixe t'expose à deux types de blagues :
Utiliser correctement les outils basés sur des décimales fixes permettent d'éviter ces écueils, même si c'est généralement lourd et chiant à faire.
La connaissance libre : https://zestedesavoir.com