使用BigDecimal以特定精度返回ZERO

时间:2011-12-16 20:40:33

标签: java math bigdecimal

我使用以下代码:

//...
else if(number.equals(ZERO))
    return BigDecimal.ZERO.setScale(precision);

通过

调用该函数
BigDecimal num = new BigDecimal(0);
System.out.println(Newton.sqrt(num, 5));

并始终返回0E-100(无论提供的精度如何),但我需要0.00000等。 感谢

1 个答案:

答案 0 :(得分:0)

如果您的第一段代码是Newton.sqrt方法的一部分,那么我认为它是理所当然的,不会执行此返回。您可以查看BigDecimal.equals的文档。

这有什么用呢:

else if(number.signum() == 0)
    return BigDecimal.ZERO.setScale(precision);

这当然只有在方法没有返回其他地方return并且number确实完全为零(忽略此处的比例)时才有效。由于Newton暗示了近似算法,因此很可能并非如此。如果这些假设属实,那么您必须重新考虑您的要求。