2011-06-11 6 views
2

Je suis confronté à un problème étrange. Mon application repose sur une double conversion:Modifier le comportement des paramètres régionaux par défaut pour le formatage des devises

chaîne de monnaie -> nombre -> chaîne de devise

Fondamentalement, les conversions individuelles sont réalisées grâce à des fonctions de localisation intégré d'iOS. J'ai récemment constaté que l'application ne fonctionne pas correctement lorsque l'utilisateur utilise CHF comme monnaie. Apparemment, la valeur par défaut pour cette locale est d'arrondir toutes les valeurs de devise au 5 cents le plus proche. (par exemple CHF 1.28 deviendra CHF 1.30, et 1.21 CHF deviendra CHF 1.20).

Pour un tas de raisons, il m'est plus facile de résoudre la convention de formatage que de résoudre le bogue pour cette seule locale. Connaissez-vous un moyen de forcer la conversion à utiliser une approche d'arrondi plus détaillée (par exemple 0,01 au lieu de 0,05) pour chaque locale?

Merci!

+0

Comme il n'y a pas de réponse, je dois accepter la mienne ... – marzapower

Répondre

2

J'ai trouvé une solution intéressante:

currencyFormatter = [[NSNumberFormatter alloc] init]; 
[currencyFormatter setGeneratesDecimalNumbers:YES]; 
[currencyFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4]; 
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 
// This will force the rounding behavior: 
[currencyFormatter setRoundingIncrement:[NSNumber numberWithFloat:0.01]]; 
+0

Exactement ce que je cherchais. Merci! Vous avez remarqué que si vous définissez un code de devise après avoir défini l'incrément d'arrondi, l'incrément d'arrondi défini est réinitialisé en fonction de la devise définie. –

Questions connexes