Objective-C: Преобразование всего двойного значения в строку без потери данных - программирование
Подтвердить что ты не робот

Objective-C: Преобразование всего двойного значения в строку без потери данных

У меня есть следующее двойное значение: 0.000900137869045636 который я хотел бы преобразовать в NSString.

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

[NSString stringWithFormat:@"%.20lf", [currentLocation coordinate].latitude];

Что мне делать, чтобы сохранить двойной номер?

Спасибо.

4b9b3361

Ответ 1

Создайте NSNumber, используя

NSNumber *myDoubleNumber = [NSNumber numberWithDouble:myDouble];

Затем вызовите

[myDoubleNumber stringValue];

Ответ 2

Короткий ответ: используйте %.18lf - протестировано с 0.000900137869045633 → 0.000900137869045639. Но не обманывайте себя, это точно, оно работает только из-за округления.

Ответ 3

Кажется, что с вашим кодом, по-видимому, нет НИКАКОЙ проблемы с вашим кодом: я просто попробовал следующее и

int main(int argc, const char * argv[])
{

    double foo = 0.000900137869045636;
    NSLog([NSString stringWithFormat:@"%.20lf", foo]);

    return 0;
}

выход журнала:

2013-05-10 14:00:18.492 Test[71101:303] 
0.00090013786904563598

Так что не уверен, какова ваша проблема, но это не в создании NSString.