对数函数给出大数字的错误输出

时间:2019-09-07 09:55:14

标签: c++ math

我一直试图找到一个最小的2的幂数,刚好小于给定的数字。例如,给定的数字:64输出:64;给定数字63输出:32,给定数字127,输出:64。我一直在尝试解决很大的数字。我得到了错误的答案

我已经使用log函数来实现该问题。另外,我使用了位操作,但是输出错误。

long double nextPower(long double n)  
{  
    long double pos = floor(log2(n));
    return pos;
}

int main()
{
    long double n;
    cin >> n;
    cout << nextPower(n) << endl;
}

这给我7、8的正确输出。但是,当我接受大量输入时,例如576460752303423487,它仅比电源59的2小1。我得到了错误的输出。预期产量:58实际产量:59

0 个答案:

没有答案