java - 这两种将毫秒转换为秒的方法有什么区别?

标签 java rounding floating-point-precision milliseconds datetime-conversion

第一种方式:

   long mySeconds = milliseconds/ 1000;

第二种方式:

   double mySeconds = milliseconds * 1e-3d;

此计算最终用于确定数组的索引,如下所示:

  int index = (int) ((someDoubleSeconds + mySeconds)/ someDouble);

这两种方法会有什么不同?

还有第一种方法舍入到下一秒还是截断像floor函数

最佳答案

正如其他人指出的那样,第一种方式会截断(在本例中有效地向下舍入),而第二种方式不会。因此,如果 milliseconds 是 10999,那么第一种方法会得到 10,第二种方法会得到 10.999

第三行有什么区别?好吧,考虑一下 someDoubleSeconds = 0someDouble = 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/

相关文章:

delphi - 两台不同计算机中的奇怪 RoundTo 函数行为

c# - C# 中 Excel 函数 ROUNDDOWN(number, num_digits) 的等价物是什么?

vba - 为什么CLng会产生不同的结果?

c - C 中不一致的求和

c++ - 为什么我的浮点值会失去精度并丢掉小数位?下面的示例代码

java - 使用插件将消息从 Bukkit 服务器传输到 IRC

java - 在不使用 Java 中的任何 DI 框架的情况下,实际上有可能做好 TDD(或 BDD)吗?

ruby - 指定小数点后有多少个数字

java - 后端服务器脚本

java 查找字符串是否包含另外2个字符串