第一种方式:
long mySeconds = milliseconds/ 1000;
第二种方式:
double mySeconds = milliseconds * 1e-3d;
此计算最终用于确定数组的索引,如下所示:
int index = (int) ((someDoubleSeconds + mySeconds)/ someDouble);
这两种方法会有什么不同?
还有第一种方法舍入到下一秒
还是截断像floor函数
?
最佳答案
正如其他人指出的那样,第一种方式会截断(在本例中有效地向下舍入),而第二种方式不会。因此,如果 milliseconds
是 10999,那么第一种方法会得到 10
,第二种方法会得到 10.999
。
第三行有什么区别?好吧,考虑一下 someDoubleSeconds = 0
和 someDouble = 10.5
。那么如果milliseconds
是10999,你的mySeconds
可能是10也可能是10.999,第三行的结果可能是0也可能是1。(因为10/10.5 小于 1,将被转换为 int 截断为 0,而 10.999/10.5 大于 1,将被转换为 int 截断为 1)
关于java - 这两种将毫秒转换为秒的方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20549664/