在使用 ceil 的 C++ 中,除法不起作用?

sgi*_*iri 3 c++ math int

好吧,我试过了,它不适用于 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));
Run Code Online (Sandbox Code Playgroud)

在 n = 3 和 a =2 的情况下,n/a 操作应返回一个双精度值,但它不会

还..

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

小智 6

这是问题所在, n/a并且m/a将评估为整数,因为 n,m,a 是整数并且整数将被存储到 double 中,为避免这种情况,您可以像这样键入 cast

r1=(double)n/a;
r2=(double)n/a;
Run Code Online (Sandbox Code Playgroud)

或者简单地将 a 的数据类型从 int 更改为 double,也许(它会帮助你#A. Theatre Square)