2010-12-29 3 views
0

Я упростил некоторые методы для упрощения понимания и исправления ошибки. Я получаю «нан» вместо получения номера и не понимаю, почему. Я хочу поместить метод getNumber внутри оператора return. Когда у меня есть метод внутри, он возвращает строку nan, но когда я просто помещаю 26 внутри, он возвращает 26, чего я хочу.Получение «nan» при вставке метода в stringWithFormat

-(double) getNumber { return 26; } 


-(NSString *) convertToString { 
     return [NSMutableString stringWithFormat: @"%Lf",[self getNumber]]; 
// returns 'nan'   when I replace [self getNumber] with 15 I get 15 
} 

ответ

0

Вы можете использовать «% F» вместо «% Lf», так как вы передаете double, не long double

+0

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

2

У вас есть пара проблем в вашем коде.

  1. Возврат двойного, а не целого числа в getNumber. Когда произойдет автоматическое принуждение, напишите чистый код.
  2. Используйте спецификатор формата %g, а не %Lf. %g для двухместных.
+0

Я думал, что% Lf было для длинных удвоений, а% f для парных. Неточно ли? – michaellindahl

+0

Это действительно не точно. '% f' для 32-битных чисел' float'. Кроме того, у вас нет длинного двойника, у вас двойной. Для этого вы используете '% g'. – jer

+0

Вы можете использовать либо e, f, либо g для форматирования двойных чисел. У них несколько разные соглашения о том, используется ли (и когда) экспоненциальная нотация. См. Http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265 – Dirk

0

Это ваш спецификатор формата. Вы должны использовать «% g» для форматирования двойника.

Смежные вопросы