以下是我困惑的一些代码:
public class MathOpration {
public static void main(String args[])
{
float F1 = -5.5f;
float F2 = 5.5f;
float F3 = -5.49f;
float F4 = 5.49f;
System.out.println("Round F1 is " + Math.round(F1));
System.out.println("Round F2 is " + Math.round(F2));
System.out.println("Round F3 is " + Math.round(F3));
System.out.println("Round F4 is " + Math.round(F4));
}
}
以上是:
Round F1 is -5
Round F2 is 6
Round F3 is -5
Round F4 is 5
我的困惑是如何-5成为F1的输出?
任何帮助都将不胜感激。
答案 0 :(得分:3)
请阅读round
的文档:
换句话说,结果等于表达式的值:
(int)Math.floor(a + 0.5f)
这解释了为什么-5.5f
轮到-5,但5.5f
轮到6轮。(floor
给出“返回最大(最接近正无穷大)的双倍值不大于参数和等于数学整数。“。)
答案 1 :(得分:2)
-6 is less than -5
当你向上看时,你会上升。
答案 2 :(得分:0)
我怀疑-5是如何成为F1的输出?
.5总是四舍五入。
由于-5.5是负数,所以它向上舍入到-5。
答案 3 :(得分:0)
如果结果不符合您的要求,您可以根据需要进行舍入。看看这个舍入的小解释。
答案 4 :(得分:0)
有时更快的等价物是
long l = (long) (f + 0.5);