将int除以整数

时间:2016-05-08 10:53:26

标签: java math

我正在寻找一种将int分成整数的方法。 我的意思是:如果我有一个数字30并且我想将它除以4,我希望输出为8,8,7,7。 Java中有没有办法做到这一点? 提前致谢。

2 个答案:

答案 0 :(得分:4)

当然,Java是完整的,因此允许您实现任何算法。

我认为结果数字之间的差异最多只能是一个 - 你没有明确地写这个。

试试这个:

final int input = 30;
final int numberOfPieces = 4;    

final int quotient = input / numberOfPieces;
final int remainder = input % numberOfPieces;

int [] results = new int[numberOfPieces];
for( int i = 0; i < numberOfPieces; i++ ) {
    results[i] = i < remainder ? quotient + 1 : quotient;
}

此代码首先计算整数商,然后将余数平均分配给第一个&#34;件&#34;。

答案 1 :(得分:1)

由于您不希望对数字进行相等的拆分,您可能会做的是:

  1. 将数字除以您想要的部分数量。

  2. Round()结果

  3. 添加所需数量的四舍五入的数字&amp;检查总和是否相同,如果没有必要加1或减1。

  4. 例如:N = 150,部分= 4

    =&GT; 37.5,围绕它(37.5)=&gt; 38

    现在,38 * 4 = 152和152-150 = 2因此从数字中减去2,你的答案是38,38,38&amp; 36。

    代码:

    import java.util.*;
    import java.lang.*;
    import java.io.*;
    
    class Ideone
    {
        public static void main (String[] args) throws java.lang.Exception
        {
            float number = 30.0f;
            float parts = 4.0f;    
    
            float val = number / parts;
    
            val = Math.round(val);
            if (val * parts == number){
                System.out.println("Numbers are:");
                for (int i = 0; i < parts; i++)
                    System.out.println(val);
            }
            else {
                int diff = Math.round((val * parts) - number);
                System.out.println("Numbers are:");
                for(int i = 0;i < parts - 1; i++)
                    System.out.println(val);
                System.out.println(val - diff);
            }
        }
    }
    

    输出:

    Numbers are:
    8.0
    8.0
    8.0
    6.0
    

    如果你想在上述情况下平等分享差异,那么只需用以下内容替换else部分:

    else {
        int diff = Math.round((val * parts) - number);
         System.out.println("Numbers are:");
         for (int i = 0; i < parts - diff; i++)
             System.out.println(val);
    
         for (int  i = 0; i < diff; i++)
             System.out.println(val - 1);
    }
    

    您的输出将是:

    Numbers are:
    8.0
    8.0
    7.0
    7.0