2009-08-18 7 views
0

Je souhaite afficher un nombre au format décimal uniquement si le nombre n'est pas un nombre entier. Comme si le nombre est flottant, il doit être affiché avec une décimale. Mais si le nombre est un entier, il doit être affiché sans point décimal comme son montre le lien suivant (deuxième partie du code)Ajustement du point décimal pour chaîne dans l'iPhone

http://www.csharp-examples.net/string-format-double/

J'utilise une chaîne comme

NSString * temp = [NSString stringWithFormat: @ "0.1f", 10];

cette température est 10,0 Je veux que ce soit 10, mais si je fais comme suit

NSString * temp = [NSString stringWithFormat: @ "0.1f", 10,9];

alors il doit être comme 10,9

Comment résoudre ce dans l'iPhone.

Répondre

1

Vous pouvez vérifier la valeur de la chaîne contre un casting, puis formatez la chaîne en conséquence:

float  x = 42.1; // whatever 
long  x_int = x; 
bool  is_integer = x_int == x; 
NSString* temp = nil; 

if (is_integer) 
{ 
    temp = [NSString stringWithFormat:@"%d", x_int]; 
} 
else 
{ 
    temp = [NSString stringWithFormat:@"%0.1f", x]; 
} 
+0

dude J'ai l'usage du même beaucoup plus d'endroits et alors mon code entier contiendra seulement si, autrement boucle. J'ai besoin d'une solution comme la chaîne formaters en C++ et% g pour printf ... Voir le lien suivant. http://stackoverflow.com/questions/838064/only-show-decimal-point-if-floating-point-component-is-not-00-sprintf-printf – rkb

+0

L'utilisation de% g fonctionne, mais gardez à l'esprit le problème de précision mentionné sur l'autre thread ... ne semble pas s'appliquer à votre cas spécifique, cependant. – fbrereto

0

Je suis la solution,

NSString * temp = [NSString stringWithFormat: @ "% g ", 10,9];

Questions connexes