Quiero calcular el porcentaje y los datos aquí son completamente dinámicos.

int sample1 = 0;

int total = 0;

int finalValue = 0;

finalValue = ((sample1*100)/total)

Aquí finalValue se imprime exactamente como quiero cuando hay algunos datos. Pero cuando el valor de la base de datos es 0 (cero), este simple cálculo da un error. Si realiza el cálculo en la calculadora, dice "El resultado no está definido". Entonces, en tal caso, intenté usar la condición if and else.

if(sample1>0)
{
  //execute code
}
else
{
  //sample1 = 0;
}

Esta lógica no funciona aquí. Entonces, ¿cuál sería la forma fácil y preferida para realizar el cálculo de porcentaje.

-2
Tatkal 29 dic. 2016 a las 15:58

3 respuestas

La mejor respuesta

Deberías verificar la total primero.

La división por cero no está permitida y es por eso que da un error

if(total != 0)
{
  //execute code
}
else
{
 throw (err) ; // handle the division by zero error
}

Nota:! = Significa que no es igual a

0
Alex Lemesios 29 dic. 2016 a las 13:09
finalValue = ((sample1*100)/total)

Estás dividiendo por cero.

Por lo tanto, primero deberá verificar total.

O, si algunos datos provienen de una base de datos, podrían ser nulos .

0
Danny_ds 29 dic. 2016 a las 13:02

Puede explotar el hecho de que un double (en lugar de int) puede representar valores indefinidos:

    int sample1 = 0;
    int total = 0;
    double finalValue = 0;
    finalValue = ((sample1 * 100) / ((double) total));
    System.out.println(finalValue);

Esto imprime:

NaN

Que es la abreviatura de "no es un número".

0
Ole V.V. 29 dic. 2016 a las 13:15