在使用ceil的c ++中,一个分区不起作用?

时间:2015-10-22 04:21:50

标签: c++ math int icc acm

好吧,我试过这个 它不起作用 在c ++中使用ceil

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操作应返回double,但它不会

也..

在m = 3和a = 2的情况下,m / a操作应返回一个double,但它不会

2 个答案:

答案 0 :(得分:2)

这是问题所在, n/am/a将计算为整数,因为n,m,a是整数,整数将存储为double,为避免这种情况,您可以像这样输入

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

或者只是将from的数据类型从int更改为double, 也许(它会帮助你#A。剧院广场)<​​/ p>

答案 1 :(得分:1)

由于nma都属于int类型,n/am/a也将是整数,这意味着3 / 2将等于1.将nm更改为double类型可以解决该问题。