4

我需要正确的公式,将小时转换为分钟,反之亦然。我已经编写了一个代码,但它似乎没有按预期工作。例如:如果我有小时 = 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);
  }
} 
4

2 回答 2

9

那是因为强制转换为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您需要在60 a之后加上“d” double,否则它是 an int,因此您的结果也将是 a int,使hours整数翻倍。通过将其double设为 a ,您可以使 Java 将 min 向上转换为 double 以进行计算,这正是您想要的。

于 2011-08-12T08:52:42.540 回答
0

8.16 X 60 结果为 489.6,如果将此值转换为 int,您将得到 489

int a = (int)489.6;
      System.out.println("Minutes:=" + a);
于 2011-08-12T08:59:19.027 回答