#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 Кумарасами — Ты пробовал это?