1

谁能解释一下这段代码是什么意思?在 if/else 中。我已多次阅读文档,但无法理解这些功能的含义。谢谢。

private long getBalanceWithFactor(long balance, double factor) {
        double faccountbalance = (double)balance * factor;
        long res = 0;
        if ((Math.ceil(faccountbalance) - faccountbalance) <= 0.5)
            res = (long)Math.ceil(faccountbalance);
        else
            res = (long)Math.floor(faccountbalance);
        return res;
    }
4

4 回答 4

3

Math.ceil()向上舍入,Math.floor()向下舍入到最接近的整数。

例如,如果你给它0.5

ceil(0.5)会回来1.0的,floor(0.5)还会回来0.0的。

在这种情况下还有另一个有用的功能:Math.round()is ceil()and floor()combine。它使用数学舍入规则舍入到最接近的整数。

请注意,这些方法将返回双精度数,因此您需要将它们转换为整数。

于 2013-08-13T09:32:59.107 回答
1

Math.ceil()- 返回不小于参数且等于数学整数的最小(最接近负无穷大)双精度值。

Math.floor()- 返回不大于参数且等于数学整数的最大(最接近正无穷大)双精度值。

取自链接,检查此以获取有关 Math 类及其中定义的方法的信息。

例如,

Math.ceil(5.8)给出 6 和

Math.floor(4.3)会给4

于 2013-08-13T09:33:01.343 回答
1

它计算 balance*factorfaccountbalance并将其四舍五入为最接近的整数。

如果该值 <= 5 轮到 prev long(地板)。

如果该值 > 5 舍入到下一个 long (ceil)。

于 2013-08-13T09:46:04.997 回答
1

ceil 是上限归一化,即 ceil 为 7.6,7.1 是 8

此方法返回整数而不是余额和因子相乘的浮点数

于 2013-08-13T09:36:26.093 回答