【发布时间】:2012-10-29 14:38:09
【问题描述】:
当 num 是双精度时,为什么 ((num / i) % 1 == 0) 不能在 C++ 中工作?以及我将如何编写此代码,通过检查它是否留下余数来检查阶乘(等 0.3333)。
int getFactorials (double num)
{
int total = 0; // if (total / 2) is equal too 'num' it is a perfect number.
for (int i = 1; i < num; i++)
{
if ((num / i) % 1 == 0)
{
cout << i << endl;
}
}
return 0;
}
【问题讨论】:
-
在进行取模之前添加一个转换为整数类型。
-
我猜的因素。我把它们混在一起
-
@didierc:如果我将双精度数(num)转换为整数,那么算法将不起作用
-
这看起来是错误的。 "doing % 1" 在除以 1 时返回余数。永远为零。
标签: c++ double factorial arithmetic-expressions