我的n
表达式为(30 - n(n - 1)) / 2n
。而且我想搜索可能的n,只有当结果是整数时才是我的答案。有没有办法确定这个表达式的结果是否是整数。
我能想到的唯一方法是(伪代码):
for float n <- 1 to 100
do float result = expression(n);
int part = (int) result;
if ( result - part < EPS )
then good to go
答案 0 :(得分:7)
您可以使用%
来计算余数。
int denom = 2 * n;
int numer = 30 - n * (n - 1);
if (denom) {
if (numer % denom == 0) {
then good to go
}
} else {
/*...denominator is 0! */
}
答案 1 :(得分:2)
if (30 - n(n - 1)) mod 2n equals to zero
答案 2 :(得分:1)
如果modf
返回0.0
,则调用它的浮点数
on是一个整数。这是测试是否的标准方法
浮点数是一个整数;它适用于所有
浮点值,即使是溢出int
的那些。