Как проверить NSDecimalNumber с NSLocale, который производит запятые в количестве - PullRequest
1 голос
/ 14 марта 2012

Я пытаюсь поддержать клиентов, чей родной язык использует запятые, а не десятичные точки, и я создал метод, который, по моему мнению, должен работать, но я не смог установить NSLocale для получения запятых в значении. Вот метод:

-(NSString *)localNumber:(double)d decimals:(int)n{

    NSLocale *deLoc = [[NSLocale alloc] initWithLocaleIdentifier:@"fr"];

    NSDecimalNumber *dn = [NSDecimalNumber decimalNumberWithString:[NSString stringWithFormat:@"%4.*f", n, d]];
    NSString *dnS = [dn descriptionWithLocale:deLoc];

    return dnS;
}

Но вывод всегда такой:

1,67

1 Ответ

2 голосов
/ 14 марта 2012

Похоже, что descriptionWithLocale содержит ошибку и работает неправильно.Я проверил, что десятичный разделитель для локали "fr" действительно является запятой, но он использует точку.

В любом случае, вот способ сделать это:

-(NSString *)localNumber:(double)d decimals:(int)n{
    NSDecimalNumber *dn = [NSDecimalNumber decimalNumberWithString:[NSString stringWithFormat:@"%4.*f", n, d]];

    NSLocale *deLoc = [[NSLocale alloc] initWithLocaleIdentifier:@"fr"];
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    [formatter setLocale:deLoc];
    [formatter setNumberStyle:NSNumberFormatterDecimalStyle];
    NSString *dnS = [formatter stringFromNumber:dn];

    return dnS;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...