将数字添加到双精度数中

时间:2016-05-07 22:49:08

标签: c# math double mod

我试图制作一个复杂的除法计算器。

我有一个double [],我想将前一个数组位置的mod添加到下一个数字的开头。

例如,如果我将1951除以2,我将19和51分成double [],(意思是double [0] = 19和double [1] = 51)并且想要添加19的mod 2到下一个位置的开头,在这种情况下添加" 1"加倍[1]并使其等于151继续。示例代码与上面的示例匹配。

    static double[] number = new double[2];
    static int toDiv;    

    static void Main(string[] args)
    {

        ///TESTING ONLY
        number[0] = 19;
        number[1] = 51;

    }//end of main

    void Calculate()
    {
            for (int i= 0; i<number.Length; i++)
            {

                if (number[i] % numsToDiv[0] == 0)
                {//if the program gets in here, % = 0

                    if (i - 1 == number.Length)
                    {
                        return false;
                    }//end of if (i-1==number.Length)
                    else
                    {
                        toDiv = (int)number[i] % numsToDiv[0];

                    }//end of else
                }//end of if
            }//end of "i" for
    }//end of Calculate()

1 个答案:

答案 0 :(得分:0)

首先创建一个函数,返回将分子分成两部分所需的0,并找到要添加的0以放置下一个数字的mod值

int zeroPlaceHolder(ZerosNeeded){
    int zeros = 1;
    for(int i = 0; i < ZerosNeeded;i++)
       zeros *= 10;
    return zeros;
}

找到分子中的数字长度 我会通过将分子更改为字符串然后找到字符串的长度

来解决这个问题
int numerator = 1951;
int denominator = 2;
//this is a convetion used in programming so am assuming C# has this too
int len = numerator.toString().length;

使用数字的0的一半将分子分成2,这将为我们提供分裂的两个部分

int divider = zeroPlaceHolder(len/2); 
//the first part can be found by
number[0] = numerator/divider;
//second part
number[1] = numerator%divider;
//find the number needed to shift the mod of previous to first digit of next
len = number[1].toString().length;
divider = zeroPlaceHolder(len);
//shift the mod of the 1st number(number[0])/denominator to the right
number[1] = number[1] + (divider * (number[0]%denominator));