通过正确的舍入从double转换为int

时间:2014-10-15 01:46:25

标签: java

好吧,我有这样的事情:

int x = 5;  
int y = 3;  
int z = Math.round(x/y); 

并且输出最终为1,即使它应该是2,是的,我已导入数学
我尝试了类似的东西:

int z = (int) ((x/y) + 0.5)  

但它不起作用并继续成为1 我也浏览了这个网站大约半个小时并尝试了我找到的所有解决方案,有些工作但是当我更改xy时,它会向上舍入而不是向下。
xy实际上应该是随机数字(这是我实际程序中的方式),但我已将其简化为

3 个答案:

答案 0 :(得分:2)

问题在于,当你将一个值传递给round()时,马已经不在谷仓中了:整数除法会从小数部分中删除,所以Math.round()得到一个干净的1,它很高兴回归。

在通话前将xy投放到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

编辑:所以是的,你需要至少投一个