此代码现在运行正常,但是它会在所有情况下给出正确答案吗?
这是我的代码:
double val1 = 0.75;
double val2 = 0.25;
if(val1 % val2 == 0){
// do something
}
答案 0 :(得分:1)
正如其他答案中所提到的,你应该将它与小值而不是整数进行比较,原因是:
考虑两个值:1.0 and 0.1
。如果您执行1.0 % 0.1
,则会因舍入错误而提供0.09999999999999995
。所以如果你要与Integer进行比较,它将返回false。
正如回答@MauricePerry所述,以下是最佳做法。
Math.abs(val1 % val2) < EPSILON //where EPSILON is a small value
答案 1 :(得分:0)
我不会这样做:对于这些值,结果可能是正确的,但可能不是,例如0.6和0.2。
更新
顺便说一下:你比较模数和(0)的整数将在比较前转换为双。
答案 2 :(得分:0)
是!
%,
也称为模数或余数运算符。 %运算符返回两个数字的余数。例如,10%3是1,因为10除以3留下1的余数。
更多:go through this link