2013-03-05 2 views
1

Я сохраняю некоторые значения в базе данных sqlite. Таким образом, данные собираются из текстового поля в виде строки, а затем преобразуются в двойные и сохраняются.Двойная точность потеряна

Это то, что я пытался

NSDecimalNumber answer;
value.answer = [NSDecimalNumber decimalNumberWithString:answerValue];

Если вы используете 6532.002 в качестве данных, он теряет свою точность.

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

Благодаря

+0

«Он теряет свою точность» - Вы можете уточнить, где с потерями преобразования происходит? –

+0

Число преобразуется в двойную форму [value.answer doubleValue], где она теряет свою точность. Новое значение - 6532.0019999999995 – jajo87

+0

Почему бы просто не сохранить его как строку? Нет проблем с беспорядочным конверсией, тогда ... – lnafziger

ответ

1

Ваш номер не может быть точно представлены в виде двойной точности с плавающей запятой из-за способа чисел с плавающей точкой работы. Вам нужно будет найти другой способ представить его, если вам нужна такая точность. Некоторые опции - использовать произвольную библиотеку точности (например, the ones listed in this Wikipedia entry) или использовать fixed point representation с количеством бит, которое необходимо для получения необходимой точности. Если вы показываете только цифры, вы должны сохранить его как строку.

0

использование

float value=[textField.text floatValue]; 
Смежные вопросы