Мне нужно напечатать значение поплавка в области с ограниченной шириной наиболее эффективно. Я использую NSNumberFormatter
, и я установил два числа после десятичной точки в качестве значения по умолчанию, так что, когда у меня есть номер 234.25
, он напечатан как есть: 234.25
. Но когда у меня есть 1234.25
, я хочу, чтобы оно было напечатано как: 1234.3
, и 11234.25
должно быть напечатано 11234
.Ограничение как дробного, так и общего числа цифр при форматировании поплавка для отображения
Мне нужна не более двух цифр после точки и максимум пять цифр в целом, если у меня есть цифры после точки, но она также должна печатать более пяти цифр, если целочисленная часть имеет больше.
Я не вижу возможности ограничить общее количество цифр в NSNumberFormatter
. Означает ли это, что я должен написать свою собственную функцию для форматирования чисел таким образом? Если да, то каков правильный способ подсчета цифр в целочисленной и дробной частях числа? Я также предпочел бы работать с CGFLoat
, а не NSNumber
, чтобы избежать дополнительных преобразований типа.
@JacquesCousteau я знаю; это еще пример, верно? –
Спасибо. Эта реализация выглядит вполне универсальной, но меня беспокоит эффективность. Может ли что-то более эффективное, чем NSString? Или нет способа подсчитать количество цифр в числе, кроме подсчета длины строки? Я буду делать это преобразование непрерывно в каждом кадре анимации в течение всего времени работы программы. Разве это не сложно? – BartoNaz
@BartoNaz: Логарифм числа оснований -10 числа приблизительно равен 1 его целочисленным числам: 'log10f (11123.25) -> 4.046221' –