c++ - ceil() 函数的意外结果
问题描述
#include <bits/stdc++.h>
using namespace std;
int main() {
long long n,m;
double ans;
cin>>n>>m;
ans=log(m)/log(n);
cout<<ans<<" "<<ceil(ans);
}
**input**
581
196122941
**output**
3 4
**expected output**
3 3
这是一个简单的 c++ 代码,其中输入是 2 个整数,我必须计算这些数字的对数除法并找到该结果的 ceil()。但是当我给出以下输入时,它显示除法结果为 3,但该结果的 ceil() 为 4。但 ceil(3) 应该给出 3。为什么会发生这种情况?
解决方案
结果类似于 3.0000000000000004441。cout
仅打印前 6 位数字。还涉及某种舍入,但这不是通常的舍入。在我的机器3.000005
上打印为3
并3.000006
打印为3.00001
. 打印更多数字
cout<< setprecision(20) << ans<<" "<<ceil(ans);
推荐阅读
- postgresql - 运算符不存在:用于索引查询的`int2vector @> oid`
- python - 如何获取分析项目的页面公共内容访问权限?
- html - 当我们使用 CanVG 导出到 PNG 时,多行标题不起作用 - Highcharts
- python - 无法在 PIP 中安装代理代理
- java - 对 Java 中任何 URL 的 HTTP(S) 请求
- python - 如何解决同一目录中的 .py 文件?
- ruby - 最快的 Net::HTTP/Net::HTTPS Ruby 包装器
- c - 将指针转换为 ULONG_PTR 以执行在 32 位和 64 系统中兼容的指针运算?
- etl - Talend:迭代和解析数组中的值到不同的点 tXMLMap
- python - 训练和验证数据集的拆分