Java - 将小时数(以双倍为单位)转换为分钟数(整数),反之亦然

时间:2011-08-12 08:50:03

标签: java datetime decimal fractions

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

2 个答案:

答案 0 :(得分: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之后你需要“d”才能使double成为60,否则它就是int,因此你的结果也是inthours 1}}整数加倍。通过使它成为double,您可以将Java up-cast min设置为double,以进行计算,这就是您想要的。

答案 1 :(得分:0)

8.16 X 60出来是489.6如果你将这个值转换为int,你将获得489

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