int x = 5;
int y = 3;
int z = Math.round(x/y);
并且输出最终为1,即使它应该是2,是的,我已导入数学
我尝试了类似的东西:
int z = (int) ((x/y) + 0.5)
但它不起作用并继续成为1
我也浏览了这个网站大约半个小时并尝试了我找到的所有解决方案,有些工作但是当我更改x
和y
时,它会向上舍入而不是向下。
x
和y
实际上应该是随机数字(这是我实际程序中的方式),但我已将其简化为
答案 0 :(得分:2)
问题在于,当你将一个值传递给round()
时,马已经不在谷仓中了:整数除法会从小数部分中删除,所以Math.round()
得到一个干净的1
,它很高兴回归。
在通话前将x
或y
投放到double
可让您达到预期效果:
int z = Math.round(((double)x)/y);
答案 1 :(得分:0)
它不给2,因为你正在进行整数运算,因此(5/3)将是整数运算中的1。
所以我的建议是施放任何一个操作数。
实施例。
Math.round((double)x/y)
答案 2 :(得分:0)
看看这个:
System.out.println("Math.round(5/3) " + Math.round(5 / 3)); System.out.println("Math.round(5.0/3.0) " + Math.round(5.0 / 3.0));
输出:
1
2
编辑:所以是的,你需要至少投一个