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