漂浮在0-1到0-17之间的问题

Fol*_*Ear 4 java

我在计算机类中得到了这个看似简单的任务,事实证明它比我更难:程序得到0到1之间的随机浮点数,然后我需要变成0到17之间的int,不包括0和17(16可能的价值观).所以我开始做一个简单的for循环,它没有真正起作用所以我去了硬编码:

public static float step(float input){
    if(input < (1/16 * 1)){
        return 1;
    }else if(input < (1/16 * 2)){
        return 2;
    }else if(input < (1/16 * 3)){
        return 3;
    }else if(input < (1/16 * 4)){
        return 4;
    }else if(input < (1/16 * 5)){
        return 5;
    }else if(input < (1/16 * 6)){
        return 6;
    }else if(input < (1/16 * 7)){
        return 7;
    }else if(input < (1/16 * 8)){
        return 8;
    }else if(input < (1/16 * 9)){
        return 9;
    }else if(input < (1/16 * 10)){
        return 10;
    }else if(input < (1/16 * 11)){
        return 11;
    }else if(input < (1/16 * 12)){
        return 12;
    }else if(input < (1/16 * 13)){
        return 13;
    }else if(input < (1/16 * 14)){
        return 14;
    }else if(input < (1/16 * 15)){
        return 15;
    }else{
        return 16;
    }
}
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,我只能找不到它总是返回16!谁能帮助我?(请JAVA)

Som*_*Guy 6

1/16例如,请注意,仅使用该值会创建一个整数除法,这将导致0此情况下的值.因此,基本上每个语句都将检查值是否为0.要获得正确的结果,您应该将条件更改为1.0/161d/16,或1f/16作为float的表示,因为1d表示double.


Ste*_*n C 6

提示#1:1/16是整数零.

提示#2:如果你乘以输入?并将其转换为整数,你得到了什么?(不,你不需要一系列if陈述....)