c++ - 如何在 C++ 中提高 int 或 long 的幂

标签 c++ pow

小问题:我只是想知道,如果一个人想要将一个 int 或 long 提高到另一个 int 或 long 的幂,会吗

(long)std::pow((double)a,(double)b)

够用还是需要

(long)(0.5 + std::pow((double)a,(double)b))

?

最佳答案

有两个考虑因素。第一个是由于浮点表示的不精确而导致的舍入;在这种情况下这不是问题,因为只要位数少于 float 中的有效位数,整数就可以完美表示。如果 long 是 32 位并且 double significand 是 53 位,通常情况下,不会有问题。

第二个考虑因素是 pow 函数本身的准确性。如果有任何可能低于实际值,则将结果加 0.5 舍入是确保结果正确的唯一方法。

pow 的预期结果将始终是一个整数,因此加 0.5 没有坏处。我会推荐那个版本。

关于c++ - 如何在 C++ 中提高 int 或 long 的幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7094108/

相关文章:

java - BigInteger.pow(大整数)?

c# - RSA - Math.pow 不准确

android - Android NDK 中的 JNIEXPORT 和 JNICALL

c++ - 错误 : aes_setkey was not declared in this scope

c++ - 我如何检查 std::pow 是否会溢出 double

c++ - 定义一个自制的 pow 函数作为练习

c++ - C++ 中的幂函数和数组

c++ - shared_ptr 导致段错误

android - 当我从 native 代码将非 nullptr 传递给 `alBufferData()` 时,OpenAL 应用程序崩溃/挂起

另一位程序员的C++理解遍历B树