我需要在c++代码中进行以下计算:
(((n*log(n)) / log(4)) + 1)
其中n的类型是‘无符号长int’(并且是2的幂,所以结果应该是整数)。
对于非常大的数字,我得到了一些错误,例如n = 9007199254740992的结果应该是238690780250636289,但是当我运行代码时,我得到了238690780250636288。
这是否是由于“log”函数没有带有'unsigned long int‘参数的实现的结果?如果是这样的话,有没有一种方法可以在不实现新的日志函数的情况下绕过它呢?
unsigned long long int upToBit(un