двойная проблема в xcode или я делаю что-то не так - PullRequest
0 голосов
/ 15 сентября 2010

Я думаю, это самая простая вещь, но она меня действительно смущает. Я уверен, что раньше успешно использовал удвоения, но теперь у меня проблемы.

Я только что создал новый тестовый проект, чтобы посмотреть, смогу ли я заставить его работать, но все, что я пытаюсь сделать, это установить двойное значение.

Итак, в viewDidLoad View Controller я набрал:

double z = 2938.09;
NSLog(@"z = %d", z);

Я ожидаю, что он выдаст 'z = 2938.09', но вместо этого я получу 'z = 343597384'

двойной z = 3,4 возвращает z = 858993459

Также большинство целочисленных значений сообщается как z = 0, но не всегда (иногда выбрасывается другое странное число, как указано выше)

Я что-то здесь упускаю или происходит что-то странное ??

Даже пробовал такие вещи, как

NSString *newString = [[NSString alloc] initWithString:@"3.4"];
double z = [newString.text doubleValue];
NSLog(@"z = %d", z);
[newString release];

но все равно сойти с ума z = 858993459: (

Ответы [ 2 ]

6 голосов
/ 15 сентября 2010

Для печати значения Double используйте% f вместо% d.

Спецификаторы формата NSlog

% @ Object

% d,% i подписано int

% u без знака

% f с плавающей запятой / double

% x,% X шестнадцатеричный int

% o восьмеричный

% zu size_t

% p указатель

% e с плавающей запятой / double (в научной нотации)

% g с плавающей запятой / double (как% f или% e, в зависимости от значения)

% s Строка C (байты)

% SC строка (unichar)

%. * S Строка Pascal (требуется два аргумента, передайте pstr [0] в качестве первого, pstr + 1как второй)

% c символа

% C unichar

% lld long long

% llu unsigned long long

%Lf длинный двойной

4 голосов
/ 15 сентября 2010

Double - это число с плавающей запятой двойной точности, поэтому для печати вы должны использовать тот же способ, что и для печати с плавающей точкой:

NSString *newString = [[NSString alloc] initWithString:@"3.4"];
double z = [newString.text doubleValue];
NSLog(@"z = %f", z);
[newString release];

%d используется для печати со знаком int.

Посмотрите на эту ссылку со спецификаторами формата для NSLog: http://www.cocoadev.com/index.pl?NSLog

...