我的for循环增量似乎是错误的

时间:2015-03-24 23:35:30

标签: java for-loop

我正在为加密大学做一个大学问题。我的程序的一部分是我想得到功率x使得(2744 ^ x)%24852977 = 8414508.我有一个循环,将双倍增加0.001。我的问题是这样的:每次在小数位上显示更长的数字时,而不是我的循环增加0.001。这是与MIN / MAX的长值有关,如果是这样,我怎么能解决这个问题,或者任何人都可以解释我出错了?这是我的增量样本。如何获得4位小数的截止点。

10.276999999989387 10.277099999989387 10.277199999989387 10.277299999989387 10.277399999989386 10.277499999989386 10.277599999989386 10.277699999989386 10.277799999989385

    import java.lang.*;
    public class crypt {
    public static void main(String args[])
    {
        long p =24852977;//variables
        long g = 2744;
        long sum = 8414508;
        long c1 = 15268076;
        long c2 = 743675;

        for(double i=0; i<=p; i=i+0.0001)//loop for increasing the power in next part of the program
        {
            long num=(long)(Math.pow((long)g, i));//number = g to the power of i
            System.out.println(i);// just to check
            if(num % p == sum)//my equation
            {
                System.out.println(i);//print the power that satisfy's this
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

请记住,数字的内部表示是二进制的。因此,对于每个十进制数,不一定存在精确的二进制表示。也就是说,没有确切的0.0001增量表示,预计会出现舍入错误。