2010-03-03 10 views
1

J'ai une liste des numéros de série de l'édition de produits à stocker dans MongoDB, par exemple,Cordes ou flotteurs?

[{"name": "123 > Item A", "serial_number": "123.1"}, 
{"name": "123 > Item B", "serial_number": "123.2"}, 
{"name": "123 > Item C", "serial_number": "123.3"}, 
{"name": "123 > Item D", "serial_number": "123.4"}, 
{"name": "124 > Item A", "serial_number": "124.1"}] 

Dois-je utiliser des flotteurs pour les chaînes de la propriété serial_number?

Répondre

6

Utiliser des chaînes. Si vous utilisez des flottants, il est probable que vous ayez des erreurs d'arrondi. Donc, vous obtiendrez des chiffres comme 123.30000001 au lieu de 123.3.

0

Oui. Je def utiliserait des cordes. Il est possible que votre numéro de série ne soit pas représentable comme un flottant, donc ce ne serait pas tout à fait exact.

Pour les choses qui doivent être exactes, c'est-à-dire les numéros de série, l'argent, etc., il est recommandé de ne jamais utiliser de flotteurs.

0

Non, sauf si vous êtes d'accord avec vos numéros de série étant non représentable en virgule flottante.

2

Il est également possible que vous ayez des numéros de série qui ne sont pas totalement numériques ou qui commencent par des zéros en tête. Le numéro de série n'est pas quelque chose que vous voulez faire avec les mathématiques, il devrait donc être stocké sous forme de données de chaîne, tout comme les codes postaux et les numéros de téléphone. Ce sont des numéros d'identification, pas des chiffres utilisés en mathématiques et donc ils sont vraiment des données de chaîne comme le nom est.

En fait, je n'utilise presque jamais de float car c'est un type de données inexact et c'est mauvais pour les choses sur lesquelles on veut faire des calculs et sur quel point on peut faire des calculs précis?

+0

Si vous êtes prudent et conscient des problèmes de précision, vous pouvez effectuer des calculs mathématiques précis avec eux. Les nombres à virgule flottante ont une plus grande portée que, disons, le type 'decimal' dans .NET, et parfois cette plage supplémentaire est nécessaire. –