objective-c nsstring stringwithformat - Сделать поплавок показывать только два десятичных знака





6 Answers

Вот несколько исправлений -

//for 3145.559706

Swift 3

let num: CGFloat = 3145.559706
print(String(format: "%f", num)) = 3145.559706
print(String(format: "%.f", num)) = 3145
print(String(format: "%.1f", num)) = 3145.6
print(String(format: "%.2f", num)) = 3145.56
print(String(format: "%.02f", num)) = 3145.56 // which is equal to @"%.2f"
print(String(format: "%.3f", num)) = 3145.560
print(String(format: "%.03f", num)) = 3145.560 // which is equal to @"%.3f"

Obj-C ,

@"%f"    = 3145.559706
@"%.f"   = 3146
@"%.1f"  = 3145.6
@"%.2f"  = 3145.56
@"%.02f" = 3145.56 // which is equal to @"%.2f"
@"%.3f"  = 3145.560
@"%.03f" = 3145.560 // which is equal to @"%.3f"

и так далее...

:@ %c форматированный

У меня значение 25.00 в float , но когда я печатаю его на экране, оно составляет 25.0000000 .
Как отобразить значение только с двумя знаками после запятой?




В Swift Language, если вы хотите показать, вам нужно использовать его таким образом. Чтобы назначить двойное значение в UITextView, например:

let result = 23.954893
resultTextView.text = NSString(format:"%.2f", result)

Если вы хотите показать в LOG, как объектно-c, используя NSLog (), то в Swift Language вы можете сделать так:

println(NSString(format:"%.2f", result))



IN object-c, если вы имеете дело с регулярными массивами char (вместо указателей на NSString), вы также можете использовать:

printf("%.02f", your_float_var);

OTOH, если вы хотите сохранить это значение в массиве символов, вы можете использовать:

sprintf(your_char_ptr, "%.02f", your_float_var);



в объекте -c вы хотите отобразить значение float в 2 десятичных числах, затем передать аргумент, указывающий, сколько десятичных точек u хотите отобразить, например, 0.02f будет печатать 25.00 0.002f будет печатать 25.000




Другой метод для Swift (без использования NSString):

let percentage = 33.3333
let text = String.localizedStringWithFormat("%.02f %@", percentage, "%")

PS это решение не работает с типом CGFloat, проверенным только с помощью Float & Double




Если вам нужно также плавать значение:

NSString* formattedNumber = [NSString stringWithFormat:@"%.02f", myFloat];
float floatTwoDecimalDigits = atof([formattedNumber UTF8String]);



Related