首页 > 解决方案 > Pow 在 C++ 中没有按预期工作

问题描述

大家好,我现在用 c++ 工作了很长一段时间,这是一个困扰我的问题。

我尝试评估 pow(2,30),但答案类似于 1.07374e+009,而不是预期的整数形式 1073741824。我尝试将其转换为 int 或 long,但事实是,它有时会将其截断为一个较低的值。例如,1073741824 有时会被截断为 1073741823。我该怎么办?此外,如果数字不是 2,应该如何确保以正确的格式得到答案。

标签: c++castingintegerpowtruncation

解决方案


如果您确定始终计算 2 的幂。使用左移运算符会更好,因为与 pow() 函数相比,它非常有效。看看这个片段。它就像魅力一样。

#include <iostream>

int main()
{
    long pow_value = (1L << 30); //Equivalent to calculating 2^30
    printf("%ld",pow_value);

    return 0;
}

推荐阅读