2013-11-20 2 views
-3

В моей программе у меня есть несколько переменных с плавающей точкой, которые мне нужно сравнить с 0. Эти переменные читаются через printf.C - сравнить чтение с поплавком до нуля

float a; 
scanf("%f", &a); 
if (a=0) 
{ 
printf("a is zero"); 
return 0; 
} 

Но это не сработает, когда я даю в 0 через scanf. «a is zero» не отображается. Он не работает с (a = 0.0) и не работает с (a = 0.0f) или (a = 0.). Единственный способ, которым я сумел сделать это с (0 < в & & в < +0,0000000000001)

, но я чувствую, что это не очень хороший способ сделать это.

Что я сделал не так? Почему он не распознает ввод 0 I с scanf как 0?

+0

Пожалуйста, прочтите этот http://floating-point-gui.de/ – JIghtuse

+4

Включите предупреждения. – Kevin

+0

Не игнорируйте предупреждения компилятора, они сообщают вам, что не так с вашей программой. –

ответ

1

Просто измените значение «=» на «==». Вы можете написать «если» заявление следующего стиля:

if (CONSTANT == variable) 
0

Изменить оператор присваивания (=) для Comaparison оператора (==), если условие.

В дополнение к этому сделать приведение типа, сравнивая значение

if (a==(float)0) 
+0

сделайте так: 'if (a == 0.0)' будет лучше, на мой взгляд. :) –

+0

@kvd Ya thats too fine –

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