虽然mod 1不是0 Android

时间:2013-11-04 18:02:15

标签: java android math

我试图让这个循环不断重复,直到结果可以被修改为1并且结果为0 这产生了一个分歧问题,我只想问一下答案是一个整数。所以答案应该是1,2,3,4等,但不是带小数位的答案。

double resulta = 1.3678; // Make it run once instead of do while
while (resulta % 1 != 0) {
    int first = randInt(0,9);
    int last = randInt(0,9);
    MainActivity.result = (first / last);
    resulta = MainActivity.result;
    String Sfirst = String.valueOf(first);
    String Slast = String.valueOf(last);
    System.out.println(MainActivity.result);
    question = "" + Sfirst + " / " + Slast + " = ?";
}

3 个答案:

答案 0 :(得分:1)

问题在于:

MainActivity.result = (first / last); //you're doing an integer division here
resulta = MainActivity.result;

因为第一个和最后一个是两个整数,所以此除法的结果返回一个整数。

Why does it return an integer ?

每个整数模1返回0,因此resulta % 1 总是等于为0,因此你的while循环永远不会结束。

答案 1 :(得分:0)

您正在测试resulta % 1 != 0并且这是荒谬的,因为非整数(%是浮点数)未定义resulta

您必须将resulta更改为整数,或者您必须期望语句的非整数值。

答案 2 :(得分:0)

尝试这样的事情:

while((resulta - (long)resulta) != 0) {
    //do stuff
}

如果resulta为3.14159,则(long)resulta将为3.任何时候resulta都有小数点,上述条件检查此while循环将返回{{ 1}}。