Nguồn cho round trong commons apache trông như thế này:Tại sao chúng ta cần phải chuyển đổi đôi thành một chuỗi, trước khi chúng ta có thể chuyển đổi nó thành một 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;
}
}
}
tôi đã tự hỏi, khi tạo BigDecimal
tại sao họ chọn để chuyển đổi gấp đôi lên một chuỗi (sử dụng Double.toString
) thay vì chỉ đơn giản bằng cách sử dụng đôi chinh no?
Nói cách khác, có vấn đề gì với điều này? :
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;
}
}
}
@@ Cảm ơn bạn! – Pacerier