我有一个任意的Double变量代表秒,我想转换成两个整数,所以我可以添加到Calendar对象,但无法弄清楚如何基本上将double分成十进制和整数值。如果存在任何更好的实现以将Double秒变量添加到日历中,我将对其他实现开放。
Double someDouble = 2.5;
int seconds = 0, milli = 0;
//Get seconds to = 2, milli to = 500 from someDouble (pad with zeroes to get three places)
Calendar someCalendar = Calendar.getInstance();
someCalendar.add(Calendar.SECOND, seconds);
someCalendar.add(Calendar.MILLISECOND, milli);
答案 0 :(得分:2)
您不需要使用日历,有一种更快捷的方法:
int seconds = (int)someDouble.doubleValue();
int milli = (int)((someDouble.doubleValue() - seconds) * 1000);
这里发生的是:
如果不是Double而是double,那么doubleValue()调用也可以省略:
double dtime = 2.5d; // or someDouble.doubleValue() if you need to convert
int seconds = (int)dtime;
int milli = (int)((dtime - seconds) * 1000);
答案 1 :(得分:0)
使用整数运算:
int seconds = someDouble.intValue();
int millis = (int)(someDouble * 1000) % 1000;
Double类提供了intValue()
方法,因此排除了seconds
。
millis
只是将毫秒数除以1000之后的余数,因此模数运算符%
就是您所需要的(秒数与此计算无关)。