convertir array java comparison int double primitive-types

array - ¿Es válido comparar un doble con un int en java?



toarray c# (6)

Utilities.getDistance(uni, enemyuni) <= uni.getAttackRange()

Utilities.getDistance devuelve doble y getAttackRange devuelve int. El código anterior es parte de una sentencia if y debe ser verdadero. Entonces, ¿la comparación es válida?

Gracias


Al realizar operaciones (incluidas las comparaciones) con dos tipos numéricos diferentes, Java realizará una conversión de ampliación implícita. Esto significa que cuando se compara un double con un int , el int se convierte en un double para que Java pueda comparar los valores como dos s double . Así que la respuesta corta es sí, comparando un int y un doble es válido, con una advertencia.

El problema es que no debe comparar dos valores de piontes flotantes para la igualdad utilizando los operadores == , <= o >= debido a posibles errores de precisión. Además, debe tener cuidado con los valores especiales que un doble puede tomar: NaN , POSITIVE_INFINITY y NEGATIVE_INFINITY . Recomiendo encarecidamente que investigues un poco y aprendas sobre estos problemas al comparar el double s.


Estará bien.

Java simplemente devolverá verdadero si el valor numérico es igual:

int n = 10; double f = 10.0; System.out.println(f==n);

El código anterior se imprime verdadero.


Esto debería estar bien. En operaciones / comparaciones de punto flotante, si un argumento es flotante / doble , el otro int también se promueve al mismo.


Sí, es absolutamente válido comparar el tipo de datos int y el tipo de datos doble.

int i =10; double j= 10.0; if (i==j) { System.out.println("IT IS TRUE"); }


Sí, es válido, y su código debería funcionar como se esperaba sin ningún problema técnico, pero esta no es la mejor práctica, los analizadores de código estático como SonarQube lo muestran como un "error" principal

Fallo mayor img de sonarQube

Descripción del error principal de sonarQube

Entonces, la forma correcta de hacer esto puede ser,

Double.compare(val1,val2)==0

si algún parámetro no es una variable de punto flotante, se promoverá a punto flotante.