0
votes

Obtenir la valeur des ordures tout en convertir en long objectif -c

J'essaie de convertir nstring à long mais je reçois la valeur des ordures. Vous trouverez ci-dessous mon code: xxx

détail.amout = 51.74
détail.fee = 2.72

O / P:
T1: 9223372036854775807 (Valeur des ordures ici)
T2: 27200000000000000 (fonctionne bien)

Merci d'avance.


2 commentaires

Il est hors de portée de long


Alors, doublera mon problème?


4 Réponses :


0
votes

C'est parce que vous stockez le produit produit à long type variables t1 et t2 .

Utilisez soit float ou double , et vous obtiendrez la bonne réponse.

basé sur les types de données de C:

Type d'entier signé long. Capable de contenir au moins la [-2 147 483 647, +2 147 483 647]; Ainsi, c'est au moins 32 Bits en taille.

ref: https://fr.wikipedia.org/wiki/c_data_types


0 commentaires

0
votes

9223372036854775807 est la valeur maximale d'un long long . Je déduis que [[jsondict ValueForKeyPathe: @ "détail.amount"] doublevalue] * 1000000000000000000 est plus grand que la valeur maximale LONG , donc lorsque vous le jettez sur Long , vous obtenez la valeur la plus proche que long peut représenter.


0 commentaires

1
votes

Chaque numéro de numéro (INT, long, double, flotteur) a des limites. Pour votre long 64 bits (parce que votre appareil est 64 bits), la limite supérieure est la suivante: 9.223,372 036 854 775 807 (voir ici: HTTPS : //fr.wikipedia.org/wiki/9,223,372,036 854 775 807 )

Dans votre cas, 51,74 * 1 000 000 000 000 000 000 = P>

9,223,372,036,854,775,807


0 commentaires

0
votes

Comme vous le lisez, il n'est pas possible avec long . Depuis que vous avez l'air de financer des mathématiques, vous devez utiliser nsdecimalnumate au lieu de double pour résoudre ce problème.


0 commentaires