在下面的代码中,当x = 60且y = 2时,result = 500。这是正确的,但任何60到119之间的x值也会得出500。另外,当x < 60时,我会得到一个除以0的错误。此外,当x >= 120时,result = 0。我对为什么会发生这种情况感到困惑。我还尝试过使用int、float和long的各种组合,但仍然没有成功。
顺便提一句,我在尝试为Android制作一个节拍器应用程序时遇到了这个问题。我从上下文中取出了这段代码,以便更容易地隔离问题。非常感谢任何帮助和/或建议!
public class main {
static long result;
static int x;
static int y;
public static void main(String[] args) {
x = 60;
y = 2;
result = 1000 * (1 / (x / 60)) / y;
System.out.println(result);
}
}
顺便提一句,我在尝试为Android制作一个节拍器应用程序时遇到了这个问题。我从上下文中取出了这段代码,以便更容易地隔离问题。非常感谢任何帮助和/或建议!
int / int -> int
。除了将其提升为float/double之外,考虑重写为(1000 * 60) / (x * y)
- 这可以减少由于1 / (x / 60)
引入的误差。 - user2246674