La fuente de round en apache commons se ve así:¿Por qué tenemos que convertir el doble en una cadena, antes de que podamos convertirlo en un BigDecimal?
public static double round(double x, int scale, int roundingMethod) {
try {
return (new java.math.BigDecimal(Double.toString(x)).setScale(scale, roundingMethod)).doubleValue();
} catch (NumberFormatException ex) {
if (Double.isInfinite(x)) {
return x;
} else {
return Double.NaN;
}
}
}
Me preguntaba, al crear la BigDecimal
¿por qué eligieron para convertir el doble a una cadena (usando el Double.toString
) en lugar de simplemente utilizar el doble ¿sí mismo?
En otras palabras, ¿qué pasa con esto? :
public static double round(double x, int scale, int roundingMethod) {
try {
return (new java.math.BigDecimal(x).setScale(scale, roundingMethod)).doubleValue();
} catch (NumberFormatException ex) {
if (Double.isInfinite(x)) {
return x;
} else {
return Double.NaN;
}
}
}
@@ Fatal Thanks! – Pacerier