1
我有这样的代码:如何比较BigDecimal,但约?
BigDecimal d = ...;
if (d.compareTo(Expression.PI) == 0) {
//do something
}
其中Expression.PI是圆周率四舍五入至小数点第100。
但是我不需要比较d是否等于pi,最多可以有100位小数,但是我们只能说20位小数。换句话说,如何检查d是否近似等于pi?
我试图
Expression.PI.setScale(20, RoundingMode.HALF_UP).compareTo(d.setScale(20, RoundingMode.HALF_UP)) == 0;
和
Expression.PI.setScale(20, RoundingMode.HALF_UP).compareTo(d) == 0;
但没有这两个似乎工作。我在这里做错了什么?
你能提供一个你希望工作的数字的例子,但这不符合你的期望吗? – lucasvw
嗯,例如,如果我有数字是pi四舍五入到20位小数。这是行不通的,因为Expression.PI被四舍五入为100位小数。 – leonz
所以你确定你有'**'等于**正好**π圆整到20个地方?首先,很难相信你需要那么高的精度。你可以尝试四舍五入,说5个地方,看看会发生什么。 – lucasvw