У меня есть проблема, похожая на проблему в этом вопросе: Как получить неформатированное строковое представление NSDecimal или NSDecimalNumber? Мне нужно, чтобы число в строковом формате точно представлялось как NSNumber, ноэто число преобразуется обратно в строку в других местах, и я не могу этого избежать.У меня проблема в том, что когда число преобразуется обратно в строку, строка в некоторых случаях находится в научной записи.
NSDecimalNumber *dn = [NSDecimalNumber decimalNumberWithString:@"0.0001"];
NSString *s = [dn stringValue]; // s will be @"1E-4"
Как я могу предотвратить отображение этого номера в научной нотации?
Я работаю в версии GNUstep примерно 2005 года (возможно, v1.11.1 дляGNUstep Base), а не на Mac или iPhone, что может объяснить некоторые различия в поведении по сравнению с другим вопросом, на который я ссылался.Я просмотрел базовую библиотеку API и документацию в моей собственной установке GNUstep, но не могу найти ничего, что могло бы помочь.
РЕДАКТИРОВАТЬ 2/7/12:
Вопрос немного изменился, но цель все та же.Первоначально я не думал, что смогу управлять частью вывода строки, но я могу передать значение обратно как строку.На данный момент я пытаюсь использовать строку форматирования, но я все еще хочу предотвратить появление научной нотации.
[NSString stringWithFormat:@"%1.14g", [val doubleValue]]
Я решил использовать %g
, потому что нам нужно определенное числозначащие цифры для значения.Если я использую %f
, я могу обрезать лишние нули, но число не всегда получается чистым.Например, 800000000.79 отображается как 800000000.7899999600.
Есть ли способ получить чисто отформатированное число с определенным количеством значащих цифр (или десятичных разрядов) без отображения научногонотация перед этим числом цифр?
Я тоже готов принять совет С.