给定两个 double
值,p
和 q
,我如何确定它们的商是否:
double result = p / q;
是 exact p
和 q
二进制值的结果吗?
即result
是否正好等于p
和q
的数学除法。
很明显,这对于某些值是正确的,例如 1.0/2.0
而对于其他值是错误的,例如 1.0/5.0
,所以我正在寻找一个惯用且准确的区分大小写的方法。
看起来浮点模 p % q == 0
可能 可行,但我不确定!
最佳答案
您可以使用 BigDecimal
来查看除法是否准确:
private static boolean canDivideExact(double p, double q) {
double r = p / q;
BigDecimal d = new BigDecimal(r);
return d.multiply(new BigDecimal(q)).compareTo(new BigDecimal(p)) == 0;
}
例如:
System.out.println(canDivideExact(1, 2)); //true
System.out.println(canDivideExact(1, 3)); //false
关于java - 给定两个 double ,如何确定它们的商是否准确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44669556/