2010-09-21 4 views
2

je stocke un nombre flottant dans mon SQLite (grâce à des données de base) comme ceci:iPhone - flotteur magasin à SQLite à travers CoreData

unit.conversion = [NSNumber numberWithFloat:0.001];

Quand je regarde la base de données SQLite la valeur est 0,0010000000474974513

unit.conversion est un flottant optionnel dans mon modèle de données ...

Qu'est-ce qui ne va pas?

Merci

Répondre

1

Étant donné que ce que vous voyez est correct (comme déjà répondu) et que vous n'êtes pas satisfait de cela: Vous pouvez utiliser NSDecimalNumber. Une recherche rapide Google fourni:

NSDecimalNumber vous permet de faire de l'arithmétique décimale comme la façon dont une financière institution voudrait que vous fassiez des maths. Attention: il est un peu désagréable de travailler avec puisque tous les opérateurs mathématiques sont des messages.

5

nombres à virgule flottante ne sont pas (toujours) représentations exactes - ils sont des approximations.

Voir What Every Computer Scientist Should Know About Floating-Point Arithmetic pour l'arrière-plan.

+0

Merci pour l'explication mais j'ai besoin également d'une solution – ncohen

+0

0.001 et la valeur que vous avez dans la base de données sont, dans la plupart des cas, la même chose, comme l'explique le lien ci-dessus. Qu'est-ce que vous attendez exactement comme une solution? – mrueg

+0

le problème est que quand je vais faire quelques multiplications, je vais obtenir des nombres flottants avec des valeurs étranges ... – ncohen