我明白双重可能不够准确。但是,我找不到使用BigDecimal的方法。我试过了
while(Math.log10(Math.abs(a.subtract(new BigDecimal(1.41421356237309504880168872420969807856967187537694))) >= -50 || Math.log10(Math.abs(b.subtract(new BigDecimal(1.41421356237309504880168872420969807856967187537694)))) >= -50 )
{
\\ stuff goes here
}
但它说我不能使用log 10或BigDecimals的绝对值。
答案 0 :(得分:0)
new BigDecimal(1.41421356237309504880168872420969807856967187537694)
1.414...
有一个双字面值,因此在程序运行之前它会被截断为双倍精度。您需要将其作为字符串传递:
new BigDecimal("1.41421356237309504880168872420969807856967187537694")
至于比较,您应该可以使用以下内容:
if(a.subtract(new BigDecimal("1.41421356237309504880168872420969807856967187537694")).abs().scaleByPowerOfTen(50).doubleValue() < 1 || ...