Checking if a number is perfect square?

后端 未结 8 2037
野趣味
野趣味 2021-02-10 01:10

I think there is a precision problem with the following code:

bool isPerfectSquare(long long n){
    long long squareRootN=(long long)(sqrt(n)+0.5);

    return          


        
8条回答
  •  再見小時候
    2021-02-10 01:29

    You could use a range for your return boolean, although it may lead to unprecise outputs depending on how stringent your requirements are:

    double threshold = 0.01;
    
    return (squareRootN*squareRootN > n-threshold) && (squareRootN*squareRootN < n+threshold);
    

提交回复
热议问题