30

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

Double.parseDouble(500 / 1000 + "." + 500 % 1000);不是最好的方法:我正在寻找一种从除法运算中获取余数的方法,因此我可以简单地将余数相加。

4

3 回答 3

77

当然你只需要:

double seconds = milliseconds / 1000.0;

无需单独手动执行这两个部分 - 您只需要浮点运算,使用1000.0(作为double文字)强制。(我假设您的milliseconds值是某种形式的整数。)

请注意,与往常一样double,您可能无法准确表示结果。BigDecimal如果您想将 100ms精确地表示为 0.1 秒,请考虑使用。(鉴于它是一个物理量,而 100 毫秒一开始并不准确,adouble可能是合适的,但是......)

于 2012-12-30T13:00:21.930 回答
5

你为什么不简单地尝试

System.out.println(1500/1000.0);
System.out.println(500/1000.0);
于 2012-12-30T13:01:00.540 回答
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.
于 2013-10-08T09:01:43.153 回答