- 整除:在除法中只有被除数、除数和商都是整数的情况下,才可以说是“整除”。
- 除尽:在除法中只要除到某一位时没有余数,不管被除数、除数和商是整数还是小数,都可以说是“除尽”。
BigDecimal判断是否能被整除
/**
* 判断被除数是否能被除数整除
*
* @param dividend 被除数
* @param divisor 除数
* @return 是-true,否-false
*/
public Boolean remainderZero(BigDecimal dividend, BigDecimal divisor) {
//TODO divisor需判断不为0
//默认判断能整除
Boolean determine = true;
//特殊情况下1.000000000002/1=1 不能使用dividend.divide(divisor, 10, ROUND_HALF_UP)保留10位小数的方式
try {
BigDecimal result = dividend.divide(divisor);
//取整判断是否与结果相同
BigDecimal number = result.setScale(0, BigDecimal.ROUND_DOWN);
determine = result.compareTo(number) == 0;
} catch (ArithmeticException exception) {
//除不尽情况
determine = false;
}
return determine;
}
BigDecimal判断是否能被除尽
/**
* 判断被除数是否能被除数除尽
*
* @param dividend 被除数
* @param divisor 除数
* @return 是-true,否-false
*/
public Boolean completeDivide(BigDecimal dividend, BigDecimal divisor) {
//TODO divisor需判断不为0
//默认判断能除尽
Boolean determine = true;
try {
//不报错则说明能被除尽
dividend.divide(divisor);
} catch (ArithmeticException exception) {
//除不尽情况
determine = false;
}
return determine;
}
标签:BigDecimal,除尽,determine,dividend,整除,被除数,divisor
From: https://blog.51cto.com/xyz5/6978370