Проблема NSString stringWithFormat

У меня такая проблема: double calcValue;

NSString *buf = [NSString stringWithFormat:@"%14f", myCalculator.calcValue];

buf = "7.142857";

вместо

buf = "7.1428571428571423";

Я пробовал форматировать его такими способами: @ "% f". Но когда я попробовал @ "% 14.9f", отобразилось 9 знаков после запятой.

В чем проблема? И как я могу это решить? Спасибо!


person yozhik    schedule 08.11.2010    source источник


Ответы (2)


Я не уверен, почему, но stringWithFormat:, похоже, не форматирует дубликаты должным образом. Вы можете попробовать такой подход:

double calcValue=7.1428571428571423;
NSString *buf=[[NSNumber numberWithDouble:calcValue] stringValue];

что установит buf в @"7.142857142857142".

Для более жесткого контроля количества цифр вы можете использовать NSNumberFormatter.

person Nick Moore    schedule 08.11.2010
comment
ответ использует% g. он делает все вместе! - person yozhik; 08.11.2010

Если я не неправильно понял, правильный формат будет @"%.14f.

То, что вы сделали, @"%14f" говорит, что вам нужно до 14 цифр до десятичной дроби, но вы не указали цифры после.

person Joshua Weinberg    schedule 08.11.2010