我需要将循环中的整数与long
和long
的商进行比较。为了不做整数除法,如果我理解正确,我需要将其中一个long转换为double?
long prime = primes[d];
int i = 1;
// "inputNumber / prime" should not be integer division, while it is now.
// How do I do this yet still compare it to an "int" afterwards?
while (i < (inputNumber / prime))
{
primes[i*prime] = 0;
i++;
}
这是代码段。 primes
是一个充满long
s的数组。顺便说一句,这段代码是正确的:
primes[i*prime] = 0;
因为我担心long * int
不会对数组索引起作用。
非常感谢!
答案 0 :(得分:3)
为什么不while((i * prime) < inputNumber)
呢? long
乘以int
会产生long
...
答案 1 :(得分:1)
您可以将整数除法的一个操作数乘以1.0
,以避免结果的整数截断。