Codenameone I';我从MathUtil.round()得到了不正确的结果。这是一个已知的bug还是我做错了什么?

Codenameone I';我从MathUtil.round()得到了不正确的结果。这是一个已知的bug还是我做错了什么?,codenameone,Codenameone,我将以下代码放入start()方法: 它正在打印这个: Float -4.3219876 rounded = -3 double -4.3219876 rounded = -3 round方法如下所示: public static int round(float a) { return (int)(a + 0.5f); } public static int round(float a) { if (a < 0) { return (int)(a -

我将以下代码放入start()方法:

它正在打印这个:

Float  -4.3219876 rounded = -3
double -4.3219876 rounded = -3
round方法如下所示:

public static int round(float a) {
    return (int)(a + 0.5f);
}
public static int round(float a) {
    if (a < 0) {
        return (int)(a - 0.5f);
    } else {
        return (int)(a + 0.5f);
    }
}
如果整数截断是以数学家的方式定义的(最大整数小于或等于该数字),那么-3.8的截断将是-4,这将很好。但它不是这样定义的。这个方法应该这样写:

public static int round(float a) {
    return (int)(a + 0.5f);
}
public static int round(float a) {
    if (a < 0) {
        return (int)(a - 0.5f);
    } else {
        return (int)(a + 0.5f);
    }
}
公共静态整数舍入(浮点a){
if(a<0){
返回值(整数)(a-0.5f);
}否则{
返回(整数)(a+0.5f);
}
}

好的,我后来发现,如果我使用java.lang.Math而不是com.codename1.util.MathUtil,即使在我将它发送到Android之后,它也可以正常工作。我避开了java.lang.Math,因为MathUtil的出现让我相信数学是一门被禁止的课程。我是否应该避免使用MathUtil类(它不起作用)?

我以前写过一篇文章(现在已删除),说这个问题已经解决了,但我错了。(它消失了,因为当我使用MathUtil.round()时,我使用了Math.round()而不是MathUtil.round(),问题仍然存在。在这种情况下,Math会更好,因为编译器在iOS上对它进行了一些特殊的优化。我将修复
MathUtil
,只调用
Math
,它是一个非常旧的类,所以它可能包含剩余内容。谢谢。我可能应该提到我发现了Math.atan()没有构建,所以我必须使用MathUtil.atan()。所以MathUtil将是一个很好的方法。