在c++中,使用ceil除法是行不通的

In c++ using the ceil a division is not working?

本文关键字:除法 行不通 ceil 使用 c++      更新时间:2023-10-16

我试过了不管用在c++中使用

int n, m, a;
double r1, r2;
cin >> n;
cin >> m;
cin >> a;
r1 = (n/a);
r2 = (m/a);
cout << (ceil(r1)*ceil(r2));

在n = 3且a =2的情况下,n/a操作将返回双精度对象,但它不

还. .

在m = 3且a =2的情况下,m/a运算将返回一个双精度对象,但它不

问题是,n/am/a将计算为整数,因为n,m,a都是整数,并且整数将被存储为double类型,为了避免这种情况,可以像这样输入强制类型转换

r1=(double)n/a;
r2=(double)n/a;

或者简单地将a的数据类型从int改为double,它可能会帮助你……剧院广场)

由于n, ma都是int类型,因此n/am/a也将是整数,即3/2将等于1。将nm更改为double类型应该可以解决此问题。

将变量的任何一个数据类型从'int'更改为'double'都可以,因为两个整数之间的操作结果是一个整数。如果您不能转换任何一个变量的数据类型,那么我建议使用蛮力方法来查找ceil。

function ceil(int a, int b){
    int d = a/b;
    if(a%b!=0) d++;
    return d;
}

[如果'a'不是'b'的倍数,则显式提高计数]

假设两个变量,'a'=7 'b'=3。D最初将是2,然后因为7不是3的倍数,' D '将被增加,我们得到预期的答案:D = 3。