我从MathUtil.round()得到了错误的结果。这是一个已知的错误还是我做错了什么?

时间:2016-04-05 09:00:13

标签: codenameone

我把这段代码放到我的start()方法中:

float dummy = -4.3219876F;
int rounded = MathUtil.round(dummy);
System.out.println("Float  " + dummy + " rounded = " + rounded);
double dummy2 = -4.3219876;
long rounded2 = MathUtil.round(dummy2);
System.out.println("double " + dummy + " rounded = " + rounded2);

打印出来:

Float  -4.3219876 rounded = -3
double -4.3219876 rounded = -3

圆形方法如下所示:

public static int round(float a) {
    return (int)(a + 0.5f);
}

如果整数截断是用数学家的方式定义的(最大整数小于或等于数字)那么-3.8的截断将是-4,这样可以正常工作。但它没有这样定义。这个方法应该是这样写的:

public static int round(float a) {
    if (a < 0) {
        return (int)(a - 0.5f);
    } else {
        return (int)(a + 0.5f);
    }
}

1 个答案:

答案 0 :(得分:1)

好的,我已经发现如果我使用java.lang.Math而不是com.codename1.util.MathUtil,即使我将它发送到我的Android之后也能正常工作。我避免使用java.lang.Math,因为MathUtil的存在让我相信Math是一个禁止的类。我应该避免使用MathUtil类(它不起作用)吗?