#include <stdio.h>
int main() {
float a = 0.7;
int c;
c = a < 0.7;
printf("%d", c);
}
Выходной результат 1, хотя он печатает 0 для всех случаев, за исключением 0,7,7,7 и 0,9, почему это так ??? Кроме того, оно должно быть равно 0, так как приоритет оператора «<» больше, чем «=» операторКакая разница в выходе для значений float?
Я думаю, что это время снова. Обязательная ссылка: [Что должен знать каждый компьютерный ученый о арифметике с плавающей точкой] (http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html) – ppeterka
@ ppeterka66 Таким образом, 0.7 <0.7 должен быть правдой? Я не трогал C в течение многих лет, но это одно смешное поведение. –
Вы пишете 0.7, но он может хранить только 0,699999 или 0,7000001 в поплавке. Потому что он не может быть точно представлен. –