2012-03-09 5 views
1

Как я могу преобразовать это число в поплавок? Это 35.77091272818393, тип NSString. Проблема в том, что если я используюКонвертировать из NSString в float?

[str doubValue] 

он возвращает 35.770912.


Я хочу, чтобы преобразовать эту строку

NSString *tt =[NSString stringWithFormat:@"%.14f", 35.77091272818393 ]; 

к поплавку, используя

var=[tt floatValue]; 

, но он не имеет достаточной точности - он возвращает только 35.7709127 и не все цифры.

ответ

6

Ваша проблема в том, что значение 35.770912, которое вы видите, представляет собой округленное значение с плавающей запятой двойной точности. Если вы хотите больше десятичной точки, чем вы можете использовать что-то вроде следующего:

[NSString stringWithFormat:@"%.14", @"35.77091272818393"]; 

Это будет выведено значение с 14 десятичными точками, и вы увидите, что точность не была потеряна в значение с плавающей запятой ,


Вы имеете проблемы со второй части вашего вопроса, потому что вы обращаетесь к floatValue свойство строки вместо doubleValue собственности. Номер, который вы указываете, требует большей точности, чем обеспечивает float. Вы должны сохранить это число с использованием типа с плавающей запятой с двойной точностью. Нечто подобное должно решить вашу проблему:

NSString *tt = [NSString stringWithFormat:@"%.14f", 35.77091272818393]; 
double var = [tt doubleValue]; 
+0

моя проблема, я хочу, чтобы повлиять на этот resultat NSString * TT = [NSString stringWithFormat: @ "% 14f", 35,77091272818393]; to var = [tt floatValue]; но у меня проблема о точности beacause, верните мне только 35.7709127, а не все число –

+0

Я добавил дополнительные данные к своему ответу, чтобы ответить на ваши разъяснения. –

+0

Два дня я смотрел этот вопрос, пока не нашел этот пост. Вышеупомянутое решение сработало. – Jeremy

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