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
)。
为什么会出现不一致
答案 0 :(得分:20)
您是否使用22/7
作为PI的近似值?因为22/7
是3.142857142857...
,其中PI约为3.14159...
。这解释了你的舍入不一致。
JVM中使用的PI的近似值记录为here。根据{{3}},它是:
pi 的双值 pi
答案 1 :(得分:6)
22/7
与PI
近似,不完全相同,结果
答案 2 :(得分:1)
几乎完全脱离主题(及其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")))