Java -将小时(双精度)转换为分钟(整数),反之亦然



我需要正确的公式,将小时转换为分钟,反之亦然。我写了一个代码,但它似乎不像预期的那样工作。如:如果我有小时=8.16,那么分钟应该是490,但我得到的结果是489。

  import java.io.*;
  class DoubleToInt {
  public static void main(String[] args) throws IOException{
  BufferedReader buff = 
  new BufferedReader(new InputStreamReader(System.in)); 
  System.out.println("Enter the double hours:");
  String d = buff.readLine();
  double hours = Double.parseDouble(d);
  int min = (int) ((double)hours * 60);
  System.out.println("Minutes:=" + min);
  }
} 

这是因为转换为int 将截断的小数部分-它不会四舍五入:

8.16 * 60 = 489.6

当转换为int时,它变成了489。

考虑使用Math.round()进行计算:

int min = (int) Math.round(hours * 60);

注意:double具有有限的精度和遭受"小剩余误差"的问题,但使用Math.round()将很好地解决这个问题,而没有处理BigDecimal的麻烦(我们不计算星际火箭轨迹在这里)。

仅供参考,要将分钟转换为小时,请使用:

double hours = min / 60d; // Note the "d"

你需要在60后面加上"d"使60成为double,否则它是int,因此你的结果也将是int,使hours成为整数double。通过将其设置为double,可以使Java将min向上转换为double类型进行计算,这正是您想要的。

8.16 X 60的结果是489.6,如果你把这个值转换成int,你会得到489

int a = (int)489.6;
      System.out.println("Minutes:=" + a);

相关内容

最新更新