Конвертировать из NSString в плавающее? - PullRequest
1 голос
/ 09 марта 2012

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

[str doubValue]

возвращает 35,770912.


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

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

с плавающей точкой, используя

var=[tt floatValue];

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

1 Ответ

6 голосов
/ 09 марта 2012

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

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

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


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

NSString *tt = [NSString stringWithFormat:@"%.14f", 35.77091272818393];
double var = [tt doubleValue];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...