Objective-c конвертировать Long и плавать в строку - PullRequest
28 голосов
/ 04 ноября 2011

Мне нужно преобразовать два числа в строку в Objective-C.

Один - длинное число, а другой - число с плавающей запятой.

Я искал в Интернете решение, и все используют stringWithFormat:, но я не могу заставить его работать.

Я пытаюсь

NSString *myString = [NSString stringWithFormat: @"%f", floatValue]

для 12345678.1234 и получение "12345678.00000" в качестве вывода

и

NSString *myString = [NSString stringWithFormat: @"%d", longValue]

Может кто-нибудь показать мне, как правильно использовать stringWithFormat:

Ответы [ 3 ]

61 голосов
/ 04 ноября 2011

В этой статье обсуждается, как использовать различные строки форматирования для преобразования чисел / объектов в экземпляры NSString:

Руководство по программированию строки: форматирование строковых объектов

Какие используют форматы, указанные здесь:

Руководство по программированию строки: Спецификаторы формата строки

Для вашего поплавка вы бы хотели:

[NSString stringWithFormat:@"%1.6f", floatValue]

А на долго:

[NSString stringWithFormat:@"%ld", longValue] // Use %lu for unsigned longs

Но, честно говоря, иногда проще просто использовать класс NSNumber:

[[NSNumber numberWithFloat:floatValue] stringValue];
[[NSNumber numberWithLong:longValue] stringValue];
3 голосов
/ 04 ноября 2011

floatValue должно быть двойным.По крайней мере, это компилируется правильно и делает то, что ожидается на моей машине. Floats может хранить только около 8 десятичных цифр, и ваш номер 12345678.1234 требует большей точности, чем, следовательно, только около 8 наиболее значимых цифр хранятся в float

double floatValue = 12345678.1234;
NSString *myString = [NSString stringWithFormat: @"%f", floatValue];

приводит к

2011-11-04 11:40:26.295 Test basic command line[7886:130b] floatValue = 12345678.123400
0 голосов
/ 29 мая 2014

Вы должны использовать NSNumberFormatter например:

    NSNumberFormatter * nFormatter = [[NSNumberFormatter alloc] init];
    [nFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
    NSNumber *num = [nFormatter numberFromString:@"12345678.1234"];
    [nFormatter release];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...