【问题标题】:How to round up a fraction on java?如何在java上四舍五入?
【发布时间】:2021-09-21 19:59:11
【问题描述】:

所以我正在尝试在 java 上编写一个方法,该方法将两个浮点数作为输入,代表两个区域。 它返回 area1 除以 area2 的商,四舍五入为整数。 这是我的代码:

public class PizzaClal {

    public static void main (String[] args){
        System.out.println(round_up(15.0, 6.0));
    }

    static int round_up(double area1, double area2) {
        double diff1 = area1 / area2;
        double diff2 = area2 / area1;

        if (area2 > area1  && diff2 > (int) diff2)  {
            return (int) (diff2) + 1;
        }if (area1 > area2 && diff1 > (int) diff1) {
            return (int) (diff1) + 1;
        } else{
            return (int) (diff1);
        }
    }
}

假设返回 3 但它返回 67。我是 java 新手,我只知道 Python,所以我不太明白我的错误在哪里。谁能帮帮我?

【问题讨论】:

  • 你的代码给了我3

标签: java if-statement methods


【解决方案1】:

如果您基本上只想返回除法结果的上限,则可以大大简化您的代码。一个技巧是使用modulus 运算符%,它返回除法的余数,这在这里特别有用。如果a / b 的余数不为零,则b 不会将a 整除。只需将1 添加到整数除法结果将产生“上限”结果。您可以简单地将(area1 / area2) 转换为整数以获得整数除法结果。

static int round_up(double area1, double area2) {
    int result = (int) (area1 / area2);
    if (area1 % area2 != 0) {
        result++;
    }
    return result;
}

【讨论】:

    【解决方案2】:

    Math.ceil 将四舍五入,听起来像你想要的(假设 area1area2 都大于 0)。

    public class PizzaClal {
    
        public static void main (String[] args){
            System.out.println(round_up(15.0, 6.0));
        }
    
        static int round_up(double area1, double area2) {
            if (area1 > area2) {
                return Math.ceil(area1 / area2);
            } else {
                return Math.ceil(area2 / area1);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2023-01-12
      • 1970-01-01
      • 2022-11-21
      • 1970-01-01
      • 2012-04-23
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多