2014-06-17 3 views
0

J'ai remarqué quelque chose de bizarre dans une de mes applications et pour certaines raisons, si je soumets un petit nombre, disons 1 000 000 000, ça fonctionnera normalement mais si je soumets un grand nombre, disons 12,345,678,987,654,321, ce cas, il était 2147483647. donc je mis en place une application simple qui suffit de prendre le numéro et parUITextField change de grand nombre quand il est entré

var theNum = textField.text.bridgeToObjectiveC().intValue 
numLabel.text = "\(theNum)" 

texte d'une étiquette maintenant, pour de plus petits nombres fonctionner, mais de grands nombres comme celui ci-dessus, il ne . Je devrais dire que je transfère les variables entre les vues dans le cas où cela a quelque chose à voir avec cela. Aussi, je sais que le code ci-dessus est dans Swift, mais il fait la même chose dans l'objectif C. C'est vraiment déconner avec moi parce que je ne trouve pas de raison que cela ferait cela donc toute aide sera appréciée!

Merci

+2

La valeur maximale d'un entier signé 32 bits est 2147483647 ... –

+0

est-il donc possible de faire un type d'entier différent qui peut contenir un plus grand nombre? – lagoon

+0

Désolé pour cette question stupide Je suis nouveau à tout cela – lagoon

Répondre

-1

Pour tenir quelques chiffres très importants ou des chiffres avec une grande précision, vous devez utiliser la classe NSDecimalNumber. Notez qu'il s'agit d'une classe, pas une primitive, vous devez l'allouer, appelez un stringValue pour obtenir la chaîne et pour faire des opérations dessus, vous devez à nouveau utiliser des méthodes. Un court exemple:

NSDecimalNumber *number = [[NSDecimalNumber alloc] initWithString:textField.text]; 
textField.text = number.stringValue; 
number = [number decimalNumberByAdding:[[NSDecimalNumber alloc] initWithInteger:10]]; 
Questions connexes