如何在C++中将int或long提升为幂

Coo*_*kie 4 c++ pow

琐碎的问题:我只是想知道,如果一个人想要提高一个int或一个long来强制另一个int或long,

(long)std::pow((double)a,(double)b)
Run Code Online (Sandbox Code Playgroud)

足够,或者我需要

(long)(0.5 + std::pow((double)a,(double)b))
Run Code Online (Sandbox Code Playgroud)

Mar*_*som 5

有两个注意事项.由于浮点表示的不精确性,第一个是舍入; 在这种情况下,这不会成为问题,因为只要位数小于浮点中有效位的位数,整数就可以完美表示.如果long是32位并且double有效数是53位,则通常不会出现问题.

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

您的预期结果pow将始终为整数,因此添加0.5无害.我推荐那个版本.