c++ - Pow 在 C++ 中没有按预期工作
问题描述
大家好,我现在用 c++ 工作了很长一段时间,这是一个困扰我的问题。
我尝试评估 pow(2,30),但答案类似于 1.07374e+009,而不是预期的整数形式 1073741824。我尝试将其转换为 int 或 long,但事实是,它有时会将其截断为一个较低的值。例如,1073741824 有时会被截断为 1073741823。我该怎么办?此外,如果数字不是 2,应该如何确保以正确的格式得到答案。
解决方案
如果您确定始终计算 2 的幂。使用左移运算符会更好,因为与 pow() 函数相比,它非常有效。看看这个片段。它就像魅力一样。
#include <iostream>
int main()
{
long pow_value = (1L << 30); //Equivalent to calculating 2^30
printf("%ld",pow_value);
return 0;
}
推荐阅读
- python - 库常量 - 如何使用
- html - 如何限制表 td 中显示的字符长度
- css - 我需要帮助在 WordPress 网站的移动视图中编辑侧边距
- reactjs - 如何在反应中共享对象。?
- adobe - 如何查看放置在 MediaBox 外的图像?
- javascript - 如何避免 React-grid-system 中的列调整大小?
- scalardb - 在 Scalar DB 中,如果我不需要它或者我需要做一些清理,我可以保留一个事务吗?
- node.js - 在我的 Ubuntu 1804 上安装 v12.18.2 后如何安装节点 8.10.x
- javascript - 如何在纯 JavaScript IF/ELSE 中重写三元语句
- mysql - 将具有指定日期范围的计算总和从一个表连接到另一个表