Умное округление по количеству цифр в Objective-C

Привет, я хочу, чтобы умные вокруг числа с плавающей запятой, чтобы сохранить количество цифр постоянным. Этот номер всегда будет иметь 1 или 2 целые цифры + неопределенные десятичные цифры.

Я хочу, чтобы номер всегда состоял из 3 цифр, независимо от их положения

EX:

83.235 = 83.2
0.110321 = 0.11
4.56723 = 4.57

1 ответ

Решение

Если ведущие нули не считаются цифрами

NSNumberFormatter имеет свойства SignificantDigits, MinimumSignificantDigits и MaximumSignificantDigits, которые должны делать то, что вам нужно. Установите оба значения на 3, или просто на максимум, если вы не хотите использовать конечные нули для значений с меньшим количеством десятичных знаков.

Если вы хотите, чтобы начальные нули считались цифрами

Я не знаю каких-либо встроенных способов справиться с этим, но вы могли бы написать некоторую пользовательскую логику, чтобы сделать это. например

if (yourNum < 10)
    formattedNum = [NSString stringWithFormat:@"%.2f", yourNum];
else
    formattedNum = [NSString stringWithFormat:@"%.1f", yourNum];

При этом предполагается, что число всегда находится в диапазоне от 0 до 99. Как бы то ни было, поэтому, если вы не уверены на 100% в целостности данных, вам, вероятно, понадобятся дополнительные проверки.

Другие вопросы по тегам