es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Comparar dos valores double en Java.

Este es un código Java que debería probar si los tres primeros dígitos después del punto decimal son idénticos. Y necesito escribir este programa sin un método principal.

public class areEqualByThreeDecimalPlaces {
    public static boolean areEqualByThreeDecimalPlaces(double d<em>1, double d</em>2) {
        double value<em>1 = Math.round(1000*d</em>1);
        double value<em>2 = Math.round(1000*d</em>2);

        if (value_1 == value_2) {
            return true;
        } else return false;
    }
}

Entrada:

(-3.1756, -3.175)

Salida esperada:

true

Salida recibida:

false

Al usar Math.round, se redondea el valor de -3.1756 a -3.176. Pero quiero verificar si los tres dígitos después del punto decimal son similares.

¿Cómo corrijo mi código?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para comprobar si los tres primeros dígitos después del punto decimal son idénticos, podemos hacer lo siguiente:

    1. Multiplicar ambos números por 1000 para desplazar el punto decimal tres lugares hacia la derecha.
    2. Castear el resultado a un entero para truncar cualquier decimal.
    3. Comparar los dos enteros.

    Aquí está el código corregido:

    public class areEqualByThreeDecimalPlaces {
        public static boolean areEqualByThreeDecimalPlaces(double d_1, double d_2) {
            int value_1 = (int) (d_1 * 1000);
            int value_2 = (int) (d_2 * 1000);
    
            if (value_1 == value_2) {
                return true;
            } else return false;
        }
    }
    

    Ahora, si ingresamos (-3.1756, -3.175) en el código corregido, se obtendrá la salida esperada de true.

Comments are closed.