【发布时间】:2013-04-12 07:44:22
【问题描述】:
根据this answer,如果我想检查一个数字是另一个数字的倍数,我可以使用余数运算符%。
if( number % anotherNumber == 0 ) {
number is a multiple of anotherNumber
}
然而在充满故意过度设计代码的this fun project 中,他们使用以下方法:
// int number;
// int anotherNumber;
if ((((int)(number / anotherNumber)) * anotherNumber == number)) {
number is a multiple of anotherNumber
}
实际上是将number 除以anotherNumber,然后将其相乘并检查结果是否为number。
第二种方法有任何实际意义还是只是故意过度设计?
【问题讨论】:
-
(请注意,显然有像这样的混淆条件可以正确处理整数溢出条件,而明显的版本不能。不要简化那种代码。至少在你搬到一种具有合理整数的语言。)
-
您链接到的项目是为了模仿(并且您在帖子中强调了同样多的内容)。我很确定答案是故意过度设计,因为这就是编码器的目的。假设它没有实际意义可能是安全的:)
-
如果
number是long、float或double会有所不同,但不清楚是什么类型。 -
如果您想要一个真正的答案,而不仅仅是为了发布 StackOverflow 问题:询问作者。
-
@AlexG:如果我只想知道这是否是一种公认的设计模式,我为什么要问作者?
标签: java design-patterns division integer-division