147 votes

Comment string conversions en Objective-C ?

Je veux convertir une chaîne en un double et après avoir fait quelques calculs là-dessus, le convertir en chaîne.

Comment je fais cela en Objective-C ?

Y a-t-il une façon de compléter un double à l’entier le plus proche de trop ?

235voto

olliej Points 16255

Vous pouvez convertir un NSString dans une chambre double avec

Arrondi au plus proche int puis peut être fait comme

Je ne sais honnêtement pas si il existe un moyen plus simple de convertir en une chaîne que

72voto

Chris Hanson Points 34485

Vraiment convertir une chaîne en un nombre correctement, vous devez utiliser une instance de NSNumberFormatter configuré pour les paramètres régionaux à partir de laquelle vous êtes en train de lire la chaîne de caractères.

Différents paramètres régionaux de format de nombres différemment. Par exemple, dans certaines parties du monde, COMMA est utilisé comme séparateur décimal, alors que dans d'autres, c'est - PERIOD - et le séparateur des milliers (si utilisé) est inversé. Sauf quand c'est un espace. Ou n'est pas présent du tout.

Cela dépend vraiment de la provenance de l'entrée. La chose la plus sûre à faire est de configurer un NSNumberFormatter pour la façon dont votre entrée mise en forme et d'utilisation -[NSFormatter numberFromString:] pour obtenir un NSNumber . Si vous souhaitez gérer les erreurs de conversion, vous pouvez utiliser -[NSFormatter getObjectValue:forString:range:error:] à la place.

33voto

Barry Wark Points 73462

Ajout à la réponse d’olliej, vous pouvez convertir un int en chaîne avec de :

sur un appelle , qui vous donne une représentation de chaîne localisée de valeur. Je ne sais pas si vous donnera une reprsentation correctement localisée de `` .

8voto

miker Points 101

Voici un exemple fonctionnel de NSNumberFormatter lecture localisé une chaîne numérique (xCode 3.2.4, osX 10.6), pour sauver celle des autres les heures que j’ai passé juste déconner autour. ATTENTION : bien qu’il peut gérer les espaces tels que « 8,765.4 », cela ne peut pas gérer des espaces blancs et cela ne peut pas gérer les caractères de texte errants. (Les chaînes d’entrée bad : « 8 » et 8 « q » et « 8 q ».)

7voto

Paul Dixon Points 122033

mode d’arrondi d’olliej est mauvais pour les nombres négatifs

  • 2.4 arrondi est 2 (obtient de méthode d’olliej ce droit)
  • −2.4 arrondie est −2 (méthode d’olliej retourne -1)

Voici une alternative

Vous pouvez bien sûr utiliser une fonction arrondie de math.h

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X