2012-06-01 2 views
0

При выполнении следующего:Как получить doubleValue, чтобы вернуть десятичное число более шести мест?

NSString * scratchString = @ ". 123456789";

CGFloat scratchNum = [scratchString doubleValue];

scrathNum содержит 0.123457

Как я могу получить scratchNum содержать все цифры? Независимо от того, что я пробовал до шести мест.

ответ

0

CGFloat представляет собой число с плавающей точкой - это float или double (в зависимости от которого выбирается typedef компилятором).

Нет понятия чисел с плавающей запятой, не содержащих «всех цифр». Их внутреннее представление меняется, но в этом случае ваш C float представлен IEEE 754 standard.

В этом случае ваше «округление» является следствием того, что принимает это число с плавающей запятой и превращает его из двоичной формы в текстовую форму. Это может быть сама ID ID Xcode (например, визуализация значения в отладчике), или, может быть, вы используете оператор printf и имеете определенное форматирование.

+0

Я вижу. Но я написал небольшой фрагмент кода: short i = 0; в то время как ((царапинаNum - пол (царапинаNum))! = 0) { царапинаNum = [царапинаString doubleValue] * pow (10, ++ i); } В этом случае I = 6 в конце цикла. Будет ли это также Xcode? –

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