为什么我在Java中的分数打印为1.0? [重复]

问题描述 投票:0回答:2

我希望我的变量i具有取决于随机数的这些分数的值。但是,当我打印出i时,它显示1.0。为什么会这样,我该如何解决这个问题?

public class Musik{
  public static void main(String[] args){
    Interval();
    System.out.println(Interval());
  }
  public static double Interval(){
    int a = (int)(Math.random() * 5);
    System.out.println(a);
    double i = 0;
    switch (a) {
      case 0 : 
        i = 2;
        break;
      case 1 : 
        i = 3/2;
        break;
      case 2 : 
        i = 4/3;
        break;
      case 3 : 
        i = 5/4;
        break;
      case 4 : 
        i = 9/8;
        break;        
    }
    return i;    
  }
}
java double fractions
2个回答
2
投票

因为3/2是两个整数之间的除法,结果为1。您可能想将两个双精度数3.0/2.0除以​​1.5


1
投票

如果期望以十进制精度表示结果,则将d添加到分母中>]

Ex:

[5/3返回1

但是

[5/3d返回1.6666666666666667

© www.soinside.com 2019 - 2024. All rights reserved.