在Java中计算以2为基数的log给出了不准确的结果[重复]

kr98yfug  于 2023-05-15  发布在  Java
关注(0)|答案(1)|浏览(168)

此问题已在此处有答案

Is floating point math broken?(32个回答)
Java: Finding if number is power of 2(1个答案)
3天前关闭。
考虑这个程序来确定一个给定的数是否是2的幂。

class Solution{
    
    // Function to check if given number n is a power of two.
    public static boolean isPowerofTwo(long n){
        
        // Your code here
        float x = (float)Math.log(n)/(float)Math.log(2);
        System.out.println(x);
        if(x%1==0)
           return true;
        return false;
        
        
    }
    
}

然后考虑n =1073741824,当输出应该是30时,它给出了29.999998。

k4emjkb1

k4emjkb11#

不要使用浮点数学来确定一个数字是否是2的幂。使用这个代替:

return n > 0 && (n&(n-1)) == 0;

相关问题