3

这是检查数字是否为素数的代码:

bool IsPrime(int num)
{
    if(num<=1)
        return false;
    if(num==2)
        return true;
    if(num%2==0)
        return false;
    int sRoot = sqrt(num*1.0);
    for(int i=3; i<=sRoot; i+=2)
    {
        if(num%i==0)
            return false;

    }
    return true;
}

表达式“num*1.0”是什么意思?

4

3 回答 3

6

乘以成. 1.0_ 您可以使用显式强制转换来做同样的事情。numdouble

于 2013-09-05T01:00:41.777 回答
3

它正在执行 num x 1.0 所以如果 num 是 5 它是 5 x 1.0 sqrt() 方法将 double 作为其参数并且将采用 5.0

于 2013-09-05T01:01:29.657 回答
3

num*1.0,num被提升为doublefirst,所以结果是 adouble然后传递给double sqrt(double)。否则,您可能需要使用sqrt(static_cast<double>(num)).

通常,您不需要强制转换,因为从to有一个隐式强制转换。参考这里intdouble

于 2013-09-05T01:01:33.027 回答