Показать сообщение отдельно
Ридл Гатофель
КОТ
Аватар для Ридл Гатофель
Сообщения: 5,269
Регистрация: 14.02.2006
Откуда: ДВР
Старый пост, нажмите что бы добавить к себе блог 12 декабря 2011, 19:19
ВКонтакте
  #1742 (ПС)
-Цитата от иксуй! Посмотреть сообщение
В джаве вообще ололо:

Показать скрытый текст

Так оба условных оператора дают false:
Код:
   
                double xL = 1.1 * 3;         
        	double yL = 3.3;
        	float xF = (float)1.1 * 3; 
        	float yF = (float)3.3;
        	
        	if(xL == yL)
        	{
        		out.println(xL + " " + yL);
        	}
   
        	if(xF == yF)
        	{
        		out.println(xF + " " + yF);
        	}
А так первый true.
Код:
  
                double xL = 1.1 * 3;         
        	double yL = 3.3;
        	float xF = (float)1.1 * 3; 
        	float yF = (float)3.3;
        	
        	if((float)xL == (float)yL)
        	{
        		out.println(xL + " " + yL);
        	}
   
        	if(xF == yF)
        	{
        		out.println(xF + " " + yF);
        	}


Добавлено через 5 минут 29 секунд
Что доказывает что всегда нужно использовать поправку, и сравнивать типы с плавающей точкой оценкой
Код:
if ( abs(x - y) < eps ) printf("x equals y")
Да, точняк, именно так это и делалось

offline
Ответить с цитированием