Проблема преобразования двойного в строку в некоторых iPhone в Objective C

#ios #objective-c #iphone #nsnumberformatter

Вопрос:

Я сталкиваюсь с проблемой при преобразовании двойной строки в строку , это происходит с одним или двумя пользователями iPhone, с моей стороны это работает так, как ожидалось

мое двойное значение — 10.890000000000001,

ожидаемый вывод строки = «10,89»,

но у некоторых пользователей iPhone вывод — «1089» ( . пропущен)

при отладке я не могу воспроизвести это, все работает так, как ожидалось, я не нашел никакой причины этой проблемы, здесь я прикрепил свой код, заранее спасибо

 NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:2];
[formatter setRoundingMode: NSNumberFormatterRoundCeiling];
NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithDouble:doubleValue]];

 

Комментарии:

1. Каков языковой стандарт этих пользователей? Находятся ли они в тех частях мира, которые используют . в качестве разделителя тысяч?

2. Locale Вот что я как раз собирался сказать.

3. Почему это помечено как Swift?

4. Может быть, есть какой-то другой код, который может привести к его потере . ? Независимо от локали, там должно быть либо а . , либо а , … там не должно быть ничего . Возможно, вы проверили с помощью lldb или NSLog?

5. в этом коде нет проблем, может быть, попробуйте проверить вычисление двойного значения, действительно ли оно правильное, как вы ожидаете?

Ответ №1:

Возможно, это не лучшая практика, но вы можете попробовать следовать ей, это должно сработать для вас.

 double doubleValue = 10.89;
    
NSString * numberString = [NSString stringWithFormat:@"%.02f", doubleValue];
NSLog(@"numberString = %@", numberString);
 

Комментарии:

1. @Jayaseelan Кумарасами — Ты пробовал это?