-Цитата от иксуй! В джаве вообще ололо:
Показать скрытый текст
Так оба условных оператора дают 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")
Да, точняк, именно так это и делалось