如何精确地将毫秒转换为秒

How to convert milliseconds to seconds with precision

提问人:Keir Nellyer 提问时间:12/30/2012 最后编辑:eebbesenKeir Nellyer 更新时间:3/1/2018 访问量:120440

问:

我想尽可能精确地将毫秒转换为秒(例如 1500 毫秒到 1.5 秒,或 500 毫秒到 0.5 秒)。

Double.parseDouble(500 / 1000 + "." + 500 % 1000);这不是最好的方法:我正在寻找一种方法来从除法操作中获取余数,这样我就可以简单地将余数添加进去。

Java 精度 以毫秒

评论


答:

83赞 Jon Skeet 12/30/2012 #1

当然,您只需要:

double seconds = milliseconds / 1000.0;

没有必要手动分别执行这两个部分 - 您只需要浮点运算,使用(作为字面意思)强制。(我假设你的值是某种形式的整数。1000.0doublemilliseconds

请注意,像往常一样,您可能无法准确表示结果。如果要将 100 毫秒精确表示为 0.1 秒,请考虑使用。(鉴于它是一个物理量,而 100 毫秒一开始就不准确,a 可能是合适的,但是......doubleBigDecimaldouble

评论

0赞 Peter Lawrey 12/30/2012
如果使用 ,则不会看到表示错误,如果转换回 String,它将位于它更正的边距中。int / 1000.0
0赞 Keir Nellyer 12/30/2012
谢谢,从来不知道这么简单!
5赞 Ankur 12/30/2012 #2

你为什么不干脆试试

System.out.println(1500/1000.0);
System.out.println(500/1000.0);

评论

0赞 Keir Nellyer 12/30/2012
谢谢,我会选择这个作为最好的答案,但乔恩的答案稍微详细一些
3赞 John 10/8/2013 #3

我也遇到了这个问题,不知何故,我的代码没有显示确切的值,而是以秒为单位将数字四舍五入到 0.0(如果毫秒小于 1 秒)。 帮助我的是将小数添加到除法值中。

double time_seconds = time_milliseconds / 1000.0;   // add the decimal
System.out.println(time_milliseconds);              // Now this should give you the right value.