Convertir NSString en double pour les calculs, puis à nouveau pour imprimer dans NSString
J'accepte NSString comme
NSString *value = [valuelist objectAtIndex:valuerow];
NSString *value2 = [valuelist2 objectAtIndex:valuerow2];
de UIPickerView.
Je veux
double *cal = value + (value2 * 8) + 3;
NSString *message =[[NSString alloc] initWithFormat:@"%@",cal];
Je devrais être en mesure d'obtenir la chaîne de caractères dans le message, après je fais les calculs sur elle .. s'il vous Plaît aider
Mon programme est de s'écraser
source d'informationauteur Omkar Jadhav
Vous devez vous connecter pour publier un commentaire.
Vous ne devriez pas convertir entre des doubles et des chaînes de tous les temps, puisqu'il a tendance à perdre de la précision (en général, vous devez être très prudent si vous ne voulez pas perdre de la précision).
Par exemple,
nextafter(1.0,2.0)
renvoie la plus petite double de plus de 1 (exactement 1.0000000000000002220446049250313080847263336181640625, mais nous sommes heureux avec 1.0000000000000002). Mise en forme avec "%g" retourne "1".Nous nous attendons à ce NSNumber de faire la bonne chose, mais
[[NSNumber numberWithDouble:nextafter(1,2)] stringValue]
également retourne "1". Selon les docs,-[NSNumber stringValue]
appels[self descriptionWithLocale:nil]
qui formats avec "%à 0,16 g". Ce n'est pas suffisant. Nous obtenir la bonne réponse sur la mise en forme avec "%.17g", cependant. Je pense que le "%de.17g" est suffisant à condition que les doubles sont la norme IEEE 754 64 bits double et les bibliothèques fonctionnent correctement, mais il n'y a pas de garantie.À la fin de la journée, il n'y a aucune garantie que
[[NSString stringWithFormat:@"%.17g",n] doubleValue] == n
.De poster une nouvelle réponse depuis le reconnus seulement string=>double:
Aller double=>string, utilisez