[英]Different results are obtained while rounding decimals
double radius = 5;
double area = Math.PI * Math.pow(radius, 2);
// System.out.println(area);
BigDecimal bd = new BigDecimal(area).setScale(2, HALF_UP);
// BigDecimal bd = new BigDecimal(area).setScale(2, ROUND_HALF_UP);
System.out.println(bd.toString());
上面的輸出打印為78.54,但是如果我通過計算器(windows calc接口)執行相同的操作,則輸出為78.57(即22/7 * 25
)。
為什么會出現不一致的情況
22/7
是PI
近似值,它不精確,結果如此
幾乎完全脫離主題(及其javascript)。 但它仍然是一個有趣的答案,實際上可見地看到PI被計算。
這種方法在計算PI時顯然超級超慢......但是看起來很有趣。
(function (t) {
(function () {
var a = 0,
b = 1,
d = 4,
c = ~1e9;
(function p() {
if (!t) {
return;
}
b -= 2;
a -= d / b;
d = -d;
if (++c % 2000 === 0) {
t.innerHTML = a;
setTimeout(p, 13);
} else {
if (c) {
p();
} else {
t.innerHTML = a;
}
}
}());
}());
}(document.getElementById("someplace-to-hold-the-calculation")))
Philippe Leybaert 為它設立了一個JSBin 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.