Как преобразовать NSDecimalNumber в double

У меня есть значение, хранящееся как NSDecimalNumber, и когда я конвертирую его в двойное, оно теряет точность.

Для текущего фрагмента данных, который я отлаживаю, значение равно 0,2676655. Когда я отправляю ему сообщение doubleValue, я получаю 0,267665. Это усечение вместо округления, и это наносит ущерб некоторому коду, который использует хэши для обнаружения изменений данных для операции синхронизации.

Экземпляр NSDecimalNumber получен из сторонней -среды, поэтому я не могу просто заменить его примитивным двойником. В конечном итоге он вставляется в NSMutableString, поэтому мне нужно строковое представление, однако его нужно передать через спецификатор формата «%. 6lf», в основном мне нужно шесть цифр после запятой, чтобы оно выглядело как 0,267666.

Как я могу сделать это, не теряя точности? Если есть хороший способ отформатировать NSDecimalNumber без преобразования в двойное, это тоже сработает.

0
задан TJ Mott 18 July 2012 в 19:10
поделиться