Я столкнулся с проблемой при делении double на int. Фрагмент кода:
double
int
double db = 10; int fac = 100; double res = db / fac;
Значение res - 0.10000000000000001 вместо 0.10.
0.10000000000000001
0.10
Кто-нибудь знает, в чем причина этого? Я использую cc для компиляции кода.
Вам необходимо прочитать классическую статью Что должен знать каждый компьютерный специалист об арифметике с плавающей точкой .
ЦП использует двоичное представление чисел.Ваш результат не может быть представлен точно в двоичном виде.0,1 в двоичном виде - 0,00011001100110011 ... CPU обрезает его в определенной точке и получает ошибку округления.
double - оператор с плавающей запятой, они не предоставляют точных значений.Посмотрите на операторов точности и с плавающей точкой в Google.