【发布时间】:2013-12-12 17:05:46
【问题描述】:
第一种方式:
long mySeconds = milliseconds/ 1000;
第二种方式:
double mySeconds = milliseconds * 1e-3d;
这个计算最终用于确定数组的索引,如下所示:
int index = (int) ((someDoubleSeconds + mySeconds)/ someDouble);
这两种方法会有什么不同?
第一种方法是rounds to the next second还是截断like floor function?
【问题讨论】:
-
将 double 转换为 int 的规则非常复杂——我隐约记得可以进行舍入。 (但请注意,
(int)演员阵容确实很受欢迎,而不是之前。) -
但是第一个除法会截断小数秒,而不是四舍五入。
-
@HotLicks 将 double 转换为 int 只会截断小数部分。
-
@arshajii - 我以前被这些规则愚弄过 - 不是每天都这样做,我想在依赖它之前阅读规范。
-
怎么样:
import static java.util.concurrent.TimeUnit.*; int seconds = SECONDS.convert(millis, MILLISECONDS);?
标签: java rounding floating-point-precision milliseconds datetime-conversion