代码之家  ›  专栏  ›  技术社区  ›  it_would_be_better

Java:如何在Java中将一个数字分成固定比率的部分,同时确保总和正确?[关闭]

  •  0
  • it_would_be_better  · 技术社区  · 1 年前

    我正试图除一个数( numberOfThings )根据固定比率分为四个部分。

    比率如下:

    • 60%用于第1部分
    • 第二部分25%
    • 第三部分10%
    • 第四部分5%

    以下是我用来计算零件的代码:

    private final double PART1_RATIO = 0.60;
    private final double PART2_RATIO = 0.25;
    private final double PART3_RATIO = 0.10;
    private final double PART4_RATIO = 0.05;
    
    private void divideIntoParts(int numberOfThings){
        int part1 = (int) Math.floor(numberOfThings * PART1_RATIO);
        int part2 = (int) Math.floor(numberOfThings * PART2_RATIO);
        int part3 = (int) Math.floor(numberOfThings * PART3_RATIO);
        int part4 = (int) Math.floor(numberOfThings * PART4_RATIO);
    }
    

    例如,如果 numberOfThings = 10 ,计算结果如下:

    • 第1部分=6
    • 第2部分=2
    • 第3部分=1
    • 第4部分=0

    这些部分的总和为9,这是不正确的,预期的结果应该是:

    • 第1部分=6
    • 第2部分=3
    • 第3部分=1
    • 第4部分=0

    如果您对如何修正此计算有任何指导或建议,我们将不胜感激!

    1 回复  |  直到 1 年前
        1
  •  1
  •   Christiaan Retief    1 年前

    您应该使用四舍五入,将数字取到最接近的整数,而不是使用丢弃小数部分的floor。

    10的25%(即2.5)将四舍五入为3

    请注意,10的5%也将是1,因此总和将是11而不是10。 A Q&;D解决这个问题的办法是将第4部分变成a 4.99% 比率和第2部分 25.01%