Удалить целые цифры при форматировании числа в строку - PullRequest
1 голос
/ 23 ноября 2011

При форматировании числа в строку я могу ограничить символы после десятичной точки, например, %.03f (отображать три цифры после точки), но как мне также удалить все цифры ДО точки?

Например, я бы хотел, чтобы 100.943 отформатировал до ".943".

Ответы [ 4 ]

2 голосов
/ 23 ноября 2011

Используйте NSNumberFormatter и установите для maximumIntegerDigits значение 0:

float f = 123.456;
NSNumber * nF = [NSNumber numberWithFloat:f];
NSNumberFormatter * formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumIntegerDigits:0];
NSLog(@"%@", [formatter stringFromNumber:nF]);

2011-11-23 18:36: 59.138 NoIntegerDigits [21834: 903] .456

2 голосов
/ 23 ноября 2011

Я думаю, что единственный способ сделать это - удалить число до десятичной точки, используя математические вычисления, или манипулирование строками после факта, например componentsSeparatedByString:@"."

Простой математический способ его удаления:

float initialValue = 100.943f;
int beforeDecimal = (int)initialValue;
float afterDecimal = initialValue - beforeDecimal;
1 голос
/ 13 января 2012

Хорошо, я думаю, я получил ваш вопрос сейчас.

Вот еще одно решение, в котором вы получите строки только из строки.

пример:

NSString *floatAsString = @"123.456";
NSArray stringDivisions = [floatAsString componentsSeparatedByString:@"."];

Вот что вы получите в массиве: 123 и 456 для разделения строковых объектов.Как только вы получите две отдельные строки, вы можете играть с ними.

Это то, что вам нужно?

0 голосов
/ 23 ноября 2011

Простой способ сделать это, Вот пример,

Сначала преобразуйте вашу строку в значение с плавающей запятой.

float x = 102,943;

int y = x;

float ans = x% y;

NSLog (@ "\ nx:% f \ ny:% d \ nans:% f", x, y, ans);

Таким образом, вывод будет:

x: 102,943000

y: 102

и 0,943000

Надеюсь, это то, что вам нужно.

...