Xcode Obj-C Почему 7/10 не 0,7 - PullRequest
       1

Xcode Obj-C Почему 7/10 не 0,7

0 голосов
/ 28 июня 2010
int a=7
int b=10
float answer = (float)a/b;

ответ = 0,699999988 (я ожидаю 0,7 ??)

Ответы [ 4 ]

3 голосов
/ 28 июня 2010

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

Более длинная версия здесь: Что должен знать каждый компьютерщик об арифметике с плавающей точкой

См. Также:

Как хранится число с плавающей запятой?Когда это имеет значение?

Почему мой номер округляется неправильно?

1 голос
/ 28 июня 2010

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

Если вам нужна большая точность, используйте тип данных double или класс NSDecimal (который сохранит ваши десятичные цифры за счет сложности).

0 голосов
/ 28 июня 2010

Единственное, на что я полагаюсь, это существование точных маленьких целых чисел (а именно -2, -1, 0, 1, 2, которые вы могли бы использовать для представления [0,1] плюс некоторые специальные значения), и некоторых людейхмуриться, используя это тоже.

0 голосов
/ 28 июня 2010

Это потому, что вычисления с плавающей запятой не точны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...