Как преобразовать строку UTF8 в значение с плавающей точкой в ​​target-c - PullRequest
0 голосов
/ 01 декабря 2010

У меня вот проблема: У меня есть строка NSString, которая содержит «1,7» (например), и я должен получить число с плавающей точкой = 1,7 Я пробовал с [mystring floatValue], но результат 1.700000000004576 Если я попытаюсь с "1,74", результат будет 1,74000000000000000067484 как я могу это исправить? спасибо!

Ответы [ 4 ]

2 голосов
/ 01 декабря 2010

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

float x = 1.7;

все равно будет иметь ошибку точности. Вот только как числа с плавающей запятой.

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

0 голосов
/ 02 декабря 2010

Вы можете обрезать ответ, используя форматирование ниже. .1 установит результат в один десятичный знак.

NSLog(@"mystring = %.1f ",[mystring floatValue]);
0 голосов
/ 01 декабря 2010

Решено!Я использовал sqlite3_bind_text, даже если мой атрибут базы данных имеет значение FLOAT, и я использовал mystring вместо myfloat, и он отлично работает!Спасибо!

0 голосов
/ 01 декабря 2010

Число с плавающей точкой должно иметь возможность представлять бесконечно много действительных чисел, но число с плавающей точкой содержит конечное число битов, поэтому значения с плавающей точкой являются приближенными.

Подробнее см. в этой статье .

...