小问题:我只是想知道,如果一个人想要将一个 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/