Деление двойного на целое число - PullRequest
0 голосов
/ 16 июня 2010

Я столкнулся с проблемой при делении double на int. Фрагмент кода:

  double db = 10;
  int fac = 100;
  double res = db / fac;

Значение res - 0.10000000000000001 вместо 0.10.

Кто-нибудь знает, в чем причина этого? Я использую cc для компиляции кода.

Ответы [ 3 ]

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

ЦП использует двоичное представление чисел.Ваш результат не может быть представлен точно в двоичном виде.0,1 в двоичном виде - 0,00011001100110011 ... CPU обрезает его в определенной точке и получает ошибку округления.

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

double - оператор с плавающей запятой, они не предоставляют точных значений.Посмотрите на операторов точности и с плавающей точкой в ​​Google.

...