Tengo dos largos no negativos. Pueden ser grandes, cerca de Long.MAX_VALUE. Quiero calcular un porcentaje de los dos números.Forma segura de desbordamiento para calcular el porcentaje de dos largos en Java
Por lo general, me gustaría hacer esto:
long numerator = Long.MAX_VALUE/3 * 2;
long denominator = Long.MAX_VALUE;
int percentage = (int) (numerator * 100/denominator);
System.out.println("percentage = " + percentage);
Esto no es correcto si el numerador es el plazo de dos magnitudes a fin de Long.MAX_VALUE.
¿Cuál es la forma correcta, simple y rápida de hacerlo?
¿Por qué el '+ 0.5' al final? Supongo que es para dar un mejor redondeo ... pero 99.6 sería 100, que tal vez no sea tan bueno –
@SteveMcLeod: Sí, tiene que ver con el redondeo (ver la respuesta actualizada). Creo que redondear al más cercano es un valor predeterminado razonable. – NPE
Esta solución me gusta. –