J'ai une valeur CGFloat que je veux arrondir à 3 chiffres après la virgule. Comment dois-je faire cela?NSNumberFormatter pour arrondir les valeurs flottantes
Merci.
J'ai une valeur CGFloat que je veux arrondir à 3 chiffres après la virgule. Comment dois-je faire cela?NSNumberFormatter pour arrondir les valeurs flottantes
Merci.
NSString *value = [NSString stringWithFormat:@"%.3f", theFloat];
myFloat = round(myfloat * 1000)/1000.0;
Essayez de formater le flotteur comme "% 5.3f" ou similaire à des fins d'affichage
... comme Zach Langley a fait dans sa meilleure réponse.
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.
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