Bonjour.
Je viens demander conseil SVP : pour un E-commerce Quel type choisir pour sa colonne ? (j'utilise MariaDB 10.2 comme SGBDR)
Pour socker des prix, j'avais pour habitude d'utiliser
Type decimal (10,2)
Mais après avoir fait des recherches "Floating Number Precision" dans Google, je me rend compte qu'on peut potentiellement avec des problèmes d'imprécision...
Par exemple, pour un produit qui vaux
35,20 €, certains disent qu'il faut stocker
3520 dans une colonne de
type int, d'autres disent que stocker
35.20 dans une colonne de type
decimal (10,2) .
D'autres disent que pour respecter la loi française il faut prévoir l'utilisation de 5 décimales pour les valeurs monétaires...
PS : quand en PHP je m'amuse à faire :
ça me retourne :
float(0.009999999999998)
On peut toujours contourner ce problème avec un number_format($resultat, 2) ou avec un round($resultat, 2), mais bon... c'est pas très rassurant d'utiliser le type
decimal (10,2)...
Mais si un jour plutôt que de stocker 2 chiffres après la virgule, ou souhaite en stocker 3 ou 4 ou autres, ça sera moins compliqué à faire si on a utilisé
decimal (10,2) au lieu de
int comme type dans la colonne de son SGBDR.
Que me conseillez-vous ?
Merci beaucoup.
Bonjour.
Je viens demander conseil SVP : pour un E-commerce Quel type choisir pour sa colonne ? (j'utilise MariaDB 10.2 comme SGBDR)
Pour socker des prix, j'avais pour habitude d'utiliser [b]Type decimal (10,2)[/b]
Mais après avoir fait des recherches "Floating Number Precision" dans Google, je me rend compte qu'on peut potentiellement avec des problèmes d'imprécision...
Par exemple, pour un produit qui vaux [b]35,20 €[/b], certains disent qu'il faut stocker [b]3520[/b] dans une colonne de [b]type int[/b], d'autres disent que stocker [b]35.20[/b] dans une colonne de type [b]decimal (10,2)[/b] .
D'autres disent que pour respecter la loi française il faut prévoir l'utilisation de 5 décimales pour les valeurs monétaires...
PS : quand en PHP je m'amuse à faire :
[code]var_dump( 35.00 - 34.99 );[/code]
ça me retourne : [b]float(0.009999999999998)[/b]
On peut toujours contourner ce problème avec un number_format($resultat, 2) ou avec un round($resultat, 2), mais bon... c'est pas très rassurant d'utiliser le type [b]decimal (10,2)[/b]...
Mais si un jour plutôt que de stocker 2 chiffres après la virgule, ou souhaite en stocker 3 ou 4 ou autres, ça sera moins compliqué à faire si on a utilisé [b]decimal (10,2)[/b] au lieu de [b]int[/b] comme type dans la colonne de son SGBDR.
Que me conseillez-vous ?
Merci beaucoup.