У меня есть значение 25.00
в float
, но когда я печатаю его на экране, оно есть 25.0000000
.
Как я могу отобразить значение только с двумя десятичными знаками?
objective-c
formatting
floating-point
mskfisher
источник
источник
Ответы:
Дело не в том, как хранится число, а в том, как вы его отображаете. При преобразовании его в строку вы должны округлить до желаемой точности, которая в вашем случае составляет два десятичных знака.
Например:
%.02f
сообщает форматировщику, что вы будете форматировать float (%f
) и что оно должно быть округлено до двух мест и дополнено0
s.Например:
источник
25
...@"%.f"
делает свое дело. То, что написано выше, не делает .@"%.*f", decimalPlaces, number
%03.f = 025
Вот несколько исправлений
Свифт 3
Obj-C,
и так далее...
источник
Вы также можете попробовать использовать NSNumberFormatter:
Возможно, вам также придется установить отрицательный формат, но я думаю, что он достаточно умен, чтобы понять это.
источник
Я сделал быстрое расширение на основе приведенных выше ответов
использование:
источник
В Swift Language, если вы хотите показать, вам нужно использовать его таким образом. Чтобы назначить двойное значение в UITextView, например:
Если вы хотите показывать в LOG так же, как target-c использует NSLog (), то в Swift Language вы можете сделать это так:
источник
В target-c, если вы имеете дело с обычными массивами символов (вместо указателей на NSString), вы также можете использовать:
OTOH, если вы хотите сохранить это значение в массиве char, который вы можете использовать:
источник
Проблема со всеми ответами состоит в том, что умножение, а затем деление приводит к проблемам точности, потому что вы использовали деление. Я узнал это давно из программирования на PDP8. Способ решить это:
Таким образом, 15,6578 возвращает только 15,66, а не 15,6578999 или что-то непредвиденное.
Какой уровень точности вы хотите, зависит от вас. Просто не делите продукт, умножьте его на десятичный эквивалент. Не требуется смешное преобразование строк.
источник
в цели -c вы хотите отобразить значение с плавающей запятой в 2 десятичном числе, а затем передать аргумент, указывающий, сколько десятичных точек вы хотите отобразить, например, 0.02f выведет 25.00, 0.002f выведет 25.000
источник
Вот некоторые методы для динамического форматирования в соответствии с точностью:
например
=> 2.3453
=> 2
=> 2,35 (округлить вверх)
источник
Другой метод для Swift (без использования NSString):
PS это решение не работает с типом CGFloat, протестированным только с
Float
&Double
источник
Используйте
NSNumberFormatter
с,maximumFractionDigits
как показано ниже:И вы получите
12.35
источник
Если вам нужно также указать значение:
источник
источник