2016-04-07 5 views
1

У меня есть код, в котором я сравниваю поплавок с == операторасравнить поплавок (примитивный тип) с помощью оператора ==

String sFloat = "0.0"; 
float n = Float.parseFloat(sFloat); 
System.out.println("n--"+n); 
if(n == 0){ 
    System.out.println("inside if"); 
} 
else{ 
    System.out.println("inside else"); 
} 

является выше способом является право сравнивать поплавок или она не будет выполнена в другой случай. как .equals или любой другой метод.

поплавок является примитивной переменной не Поплавок

Я не хочу использовать обертку Float. Я хочу только примитивное сравнение

+0

Этот вопрос подходит: [что не так с использованием для сравнения float в java] (http://stackoverflow.com/questions/1088216/whats-wrong-with-using-to-compare-floats-in-java) , Цитата из этого ответа. Значения точки плавания могут быть отключены немного, поэтому они могут не сообщать о том, что они точно равны. Например, установив float на «6.1», а затем снова распечатав его, вы можете получить сообщение о значении «6.099999904632568359375». Это имеет фундаментальное значение для работы поплавков; поэтому вы не хотите сравнивать их с помощью равенства, а скорее сравнения в пределах диапазона_ – uniknow

+0

. Это уже упоминалось: «float - это примитивная переменная, а не Float», почему дублируется? – SarthAk

ответ

2

Примитивные переменные сравниваются с оператором == не с методом equals(), поскольку используются только для ссылочных типов переменных.

1
float f1 = 22.30f; 
float f2 = 88.67f; 
int retval = Float.compare(f1, f2); 

if(retval > 0) { 
    System.out.println("f1 is greater than f2"); 
} 
else if(retval < 0) { 
    System.out.println("f1 is less than f2"); 
} 
else { 
    System.out.println("f1 is equal to f2"); 
} 

Это был бы лучший способ сравнить значения поплавка.

+1

Я считаю, что это будет иметь некоторые неожиданные функции, когда -0,0 сравнивается с 0.0 (и некоторые другие такие случаи). Конечно, это зависит от того, какое конкретное сравнение вы хотите достичь. –

1

Как вы уже сказали, float является примитивным переменным, поэтому безопасно использовать оператор == для сравнения поплавков. Кроме того, используя Float, оболочку класса типа float, вы должны использовать поставщик метода equals().

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