我使用以下代码:
//...
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等。 感谢
答案 0 :(得分:0)
如果您的第一段代码是Newton.sqrt
方法的一部分,那么我认为它是理所当然的,不会执行此返回。您可以查看BigDecimal.equals
的文档。
这有什么用呢:
else if(number.signum() == 0)
return BigDecimal.ZERO.setScale(precision);
这当然只有在方法没有返回其他地方return
并且number
确实完全为零(忽略此处的比例)时才有效。由于Newton
暗示了近似算法,因此很可能并非如此。如果这些假设属实,那么您必须重新考虑您的要求。