在c++中,使用ceil除法是行不通的
In c++ using the ceil a division is not working?
我试过了不管用在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/a
和m/a
将计算为整数,因为n,m,a都是整数,并且整数将被存储为double类型,为了避免这种情况,可以像这样输入强制类型转换
r1=(double)n/a;
r2=(double)n/a;
或者简单地将a的数据类型从int改为double,它可能会帮助你……剧院广场)
由于n
, m
和a
都是int
类型,因此n/a
和m/a
也将是整数,即3/2将等于1。将n
和m
更改为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。
相关文章:
- 在除法中不需要四舍五入
- 在TFHE(完全快速同态加密)上执行除法
- 使用 int 表示浮点除法 C++
- 而循环:简单的除法程序输出零,不明白为什么
- 余数除法和不允许除以零 (c++) 时遇到问题
- 如何确定涉及 C++ 中除法的算术表达式的数据类型
- OpenGL ES 2.0将纹理绘制到屏幕上是行不通的
- 如何使用除法和for_each?
- C++:奇怪的除法输出
- 分配给浮点数的积分文字除法 - 为什么结果是错误的?
- 除法函数返回错误的值
- 检查向量是否使用除法和阻抗算法进行排序
- 不使用算术运算符的除法
- C++编译器能在编译时计算出文字的除法结果吗
- 浮点 由于除法语句而导致的 c++ 异常
- 特征矩阵向量除法
- 在早期的 C 和 C++ 编译器中,手动位移位与乘法和除法的相关性如何?
- 用除法反转向量的元素
- 按运行时常量值重复整数除法
- 在c++中,使用ceil除法是行不通的