2009-07-08 5 views
0

dans le développement de l'objectif-c ou de l'iphone quelqu'un a-t-il déjà fait un formatage dynamique des nombres - quelque chose comme "utilisez kCFNumberFormatterDecimalStyle jusqu'à ce que le nombre devienne trop grand, utilisez plutôt kCFNumberFormatterScientificStyle?" Je veux afficher un nombre avec une sorte d'hybride entre les deux, mais j'ai un peu de mal à l'implémenter. Merci d'avance.kCFNumberFormatterScientificStyle et kCFNumberFormatterDecimalStyle hybride? - iphone/objective-c

Répondre

1

Une autre façon serait la sélection de la ligne de formatter en utilisant l'opérateur elvis:

// assuming you have formatter declared previously 
// and x is the float NSNumber you want to format 

formatter = ([x floatValue] < 1000.0) ? 
       kCGNumberFormatterDecimalStyle : 
       kCGNumberFormatterScientificStyle; 

// Format with formatter 

Vous probaly voulez mettre tous de cela dans un #define ou une méthode si.

+0

merci - encore une question ... quelle est la valeur décimale maximale de 32 bits pour CGFloat? il semble que la valeur maximale est 3.40282347e + 38F mais je vais commencer à décimale et travailler, donc j'essaie de comprendre le point de coupure. :) Merci encore! – taber

+0

CGFloat est soit typedef'd comme double ou flottant en fonction de votre environnement. La valeur maximale est CGFLOAT_MAX, qui est égale à DBL_MAX ou FLT_MAX. – szzsolt

+0

ah-ha. Je devine quelle est ma vraie question, puisque je définis mon numéro comme: CGFloat num; et en utilisant [formatter setNumberStyle: kCFNumberFormatterDecimalStyle]; hors de la porte, quelle est la valeur maximale "décimale" num peut être (je continue à ajouter 1,0f chaque itération) avant que j'ai besoin de le basculer pour utiliser kCGNumberFormatterScientificStyle? Merci! – taber

0

Je dirais que créer une méthode pour que quelque part:

NSString *NSStringFromNumberInHybridStyle(NSNumber *aNumber) 
{ 
    if ([aNumber intValue > 100]) { 
     // format with kCGNumberFormatterDecimalStyle 
    } else { 
     // format with kCGNumberFormatterScientificStyle 
    } 
} 
Questions connexes