2009-01-09 7 views

Répondre

10
NSString *value = [NSString stringWithFormat:@"%.3f", theFloat]; 
2
myFloat = round(myfloat * 1000)/1000.0; 
+0

Merci Kevin. Mais pendant l'impression, je reçois toujours un .xxx000. C'est le 000 que je ne veux pas. C'est pourquoi je demandais si je devais utiliser NSNumberFormatter – lostInTransit

1

Essayez de formater le flotteur comme "% 5.3f" ou similaire à des fins d'affichage

... comme Zach Langley a fait dans sa meilleure réponse.

4

Si vous voulez aller la route NSDecimalNumber, vous pouvez utiliser les éléments suivants:

NSDecimalNumber *testNumber = [NSDecimalNumber numberWithDouble:theFloat]; 
NSDecimalNumberHandler *roundingStyle = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundBankers scale:3 raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:NO]; 
NSDecimalNumber *roundedNumber = [testNumber decimalNumberByRoundingAccordingToBehavior:roundingStyle]; 
NSString *stringValue = [roundedNumber descriptionWithLocale:[NSLocale currentLocale]]; 

Cela utilisera arrondi à 3 chiffres décimaux banquiers: « Round à la valeur la plus proche de retour possible, quand à mi-chemin entre deux possibilités, renvoyer la possibilité dont le dernier chiffre est pair.En pratique, cela signifie qu'à long terme, les nombres seront arrondis aussi souvent qu'ils sont arrondis, il n'y aura pas de biais systématique. De plus, il utilisera un séparateur décimal spécifique aux paramètres régionaux (".", ",", Etc.). Cependant, si vous avez une valeur numérique comme 12.5, cela retournera "12.5", pas "12.500", ce qui n'est peut-être pas ce que vous cherchez.

Questions connexes