11
votes

Stocker le prix en PHP. Qu'est-ce qui est meilleur double ou string?

J'ai fabriqué "objet" "objet" pour mon application et j'ai pu définir des attributs, quand tout à coup, je suis arrivé à l'attribut de prix et je suis tombé dessus avec la question de savoir quel type de choix choisir? Je comprends que pour PHP cela n'a pas beaucoup d'importance, mais disons pour MySQL.
Toute suggestion?


0 commentaires

7 Réponses :


2
votes

La question que je me pose toujours me pose toujours lorsque vous envisagez de datatypes string ou numériques (int, double, etc.), "Est-ce que je vais faire des maths avec eux?" Si la réponse est oui, laquelle je dois supposer que c'est dans votre cas, je vais avec la valeur numérique. Si la réponse est non, je choisis la valeur de la chaîne.


0 commentaires

1
votes

Avec les informations que vous donnez, il semble mieux d'utiliser un entier, vous pouvez donc trier et interroger avec des valeurs numériques au lieu de valeurs de chaîne. Un Int serait meilleur qu'un point flottant, car il n'aura pas eu de problèmes étrange différents.

IE, vous ne voulez pas que 6,77 soit supérieur à 12.54, vous ne voulez pas non plus quelque chose avec le prix 6.4312313141.


0 commentaires

28
votes

Les types de nombres réels sont meilleurs pour les chiffres car vous pouvez faire des comparaisons appropriées avec eux (par exemple, prix <10.0). Cependant, ils introduisent des problèmes de précision (des choses comme 3.0 = 2,999999999999). Il est préférable d'utiliser un type décimal autochtone dans ce cas, mais manque que, je stockais les prix comme un nombre entier de cents (par exemple, 6,77 => 677), puis divisez par 100 avant de présenter le numéro à l'utilisateur. De cette façon, vous obtenez les opérations numériques dans la base de données et vous obtenez la précision (en supposant que la précision de 1 cent suffit).


1 commentaires

Le choix de la base de données est-il aussi?



4
votes

Il y a une explication détaillée des solutions "Meilleures pratiques" pour cette question dans cette question à la question . L'utilisation d'entiers est également une alternative acceptable. Quoi qu'il en soit, il est préférable d'utiliser la même solution sur votre application pour faciliter la comparaison et l'arithmétique.

N'oubliez pas que vous pouvez toujours modifier la façon dont les données se ressemblent avant de la présenter à l'utilisateur, en utilisant Number_Format () ou autre chose.


0 commentaires

9
votes

ni est approprié.

Les prix doivent être stockés comme décimal ou int, car ils ont un nombre fixe de points décimaux. L'utilisation de floats n'est pas une bonne idée car les valeurs seront arrondies. Les chaînes sont problématiques car vous ne serez pas capable de faire des comparaisons.


0 commentaires

0
votes

Je préfère personnellement les entiers à stocker comme valeur cent, 650 au lieu de 6,50. Tri facile, aucun problème d'arrondi et facile à afficher dans le format de vos utilisateurs.


0 commentaires

0
votes

Vous voudrez peut-être consulter le temps et argent projet sur Sourceforge. Divulgation complète: je n'ai pas beaucoup examiné le projet, mais cela semble que cela vous donnerait de bonnes idées sur la manipulation de telles choses.


0 commentaires