首页 > 解决方案 > 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。为什么会发生这种情况?

标签: c++c++11ceil

解决方案


结果类似于 3.0000000000000004441。cout仅打印前 6 位数字。还涉及某种舍入,但这不是通常的舍入。在我的机器3.000005上打印为33.000006打印为3.00001. 打印更多数字

cout<< setprecision(20) << ans<<" "<<ceil(ans);

推荐阅读