0

我不知道为什么,但是如果我将参数从小数更改为分数,我会得到两个不同的结果。

这些方法将返回确切的值。如果它是小数,我正在尝试四舍五入,例如:

0.0 -> 0

0.1 -> 1

0.4 -> 1

0.5 -> 1

0.6 -> 1

1.0 -> 1

1.1 -> 2

// accepts Double
private void myRound(Double d){
   int res = (int)Math.ceil(d);
   return (res <= 0 ? 1 : res);
}

// acepts int
private void myRound(int i){
   int res = (int)Math.ceil(i);
   return (res <= 0 ? 1 : res);
}

例子:

System.out.println(myRound(14 / 10));

输出:1

System.out.println(myRound(1.4);

输出:2

4

2 回答 2

5

问题是首先转换为整数,其中 (14/10) 为 1,然后将其上限设为 1。1.4 是双精度数,因此将其设为双精度数。

于 2013-02-12T15:06:03.310 回答
3

14/10,正如您所写的那样,是1,因为两者1410都将是int,所以结果是int.

您列为输出的内容与您的代码不匹配(尤其是因为您显示的代码从不调用myRound),但我怀疑这将是您实际看到的任何内容的解释。

于 2013-02-12T15:08:45.737 回答