Java 如何将双精度的秒转换为两个整数';秒和毫秒?
我有一个表示秒的任意双精度变量,我希望将其转换为两个整数,这样我就可以添加到Calendar对象中,但我不知道如何将双精度基本上分解为十进制和整数值。如果有更好的实现可以在日历中添加双秒变量的话,我愿意接受其他实现Java 如何将双精度的秒转换为两个整数';秒和毫秒?,java,int,double,Java,Int,Double,我有一个表示秒的任意双精度变量,我希望将其转换为两个整数,这样我就可以添加到Calendar对象中,但我不知道如何将双精度基本上分解为十进制和整数值。如果有更好的实现可以在日历中添加双秒变量的话,我愿意接受其他实现 Double someDouble = 2.5; int seconds = 0, milli = 0; //Get seconds to = 2, milli to = 500 from someDouble (pad with zeroes to get three place
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);
您不需要使用日历,有一种更快的方法:
int seconds = (int)someDouble.doubleValue();
int milli = (int)((someDouble.doubleValue() - seconds) * 1000);
这里发生的是:
double dtime = 2.5d; // or someDouble.doubleValue() if you need to convert
int seconds = (int)dtime;
int milli = (int)((dtime - seconds) * 1000);
使用整数算术:
int seconds = someDouble.intValue();
int millis = (int)(someDouble * 1000) % 1000;
Double类提供了intValue()
方法,因此这就是seconds
排序
millis
只是毫秒数除以1000后的余数,因此模数运算符%
就是您所需要的(秒数与此计算无关)。回答得不错。我相信第2行中的(double)
强制转换是不必要的。你是对的,当我需要一个double值时,我总是转换为double,但在这种情况下是不必要的,我删除了它。首先,double someDouble
应该是double someDouble
。如果你不理解基本类型和对象之间的区别,我建议你研究一下它们。@Code peedient我们甚至不知道OP是否控制输入。