提问人:Keir Nellyer 提问时间:12/30/2012 最后编辑:eebbesenKeir Nellyer 更新时间:3/1/2018 访问量:120440
如何精确地将毫秒转换为秒
How to convert milliseconds to seconds with precision
问:
我想尽可能精确地将毫秒转换为秒(例如 1500 毫秒到 1.5 秒,或 500 毫秒到 0.5 秒)。
Double.parseDouble(500 / 1000 + "." + 500 % 1000);
这不是最好的方法:我正在寻找一种方法来从除法操作中获取余数,这样我就可以简单地将余数添加进去。
答:
83赞
Jon Skeet
12/30/2012
#1
当然,您只需要:
double seconds = milliseconds / 1000.0;
没有必要手动分别执行这两个部分 - 您只需要浮点运算,使用(作为字面意思)强制。(我假设你的值是某种形式的整数。1000.0
double
milliseconds
请注意,像往常一样,您可能无法准确表示结果。如果要将 100 毫秒精确表示为 0.1 秒,请考虑使用。(鉴于它是一个物理量,而 100 毫秒一开始就不准确,a 可能是合适的,但是......double
BigDecimal
double
评论
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.
评论