Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java TimeUnit.millizes.toSeconds()可选吗?_Java_Time - Fatal编程技术网

Java TimeUnit.millizes.toSeconds()可选吗?

Java TimeUnit.millizes.toSeconds()可选吗?,java,time,Java,Time,我希望将任意值从毫秒转换为秒,我的第一个选择是TimeUnit.millizes.toSeconds。但是,它返回一个长值,因此将1毫秒转换为0秒,而不是0.001秒 当我阅读时,我可以从某种程度上提取出时间单位是专门用来“走另一条路”的。尽管我不明白他们为什么选择这种策略,但我正在寻找一种(懒惰的!)替代方案来进行这种类型的转换 嗯,我想他们已经尽力掩盖了“最坏的情况”。例如,如果尝试将1天转换为纳秒,则该数字将大于最大整数 System.out.println(TimeUnit.DAYS.t

我希望将任意值从毫秒转换为秒,我的第一个选择是TimeUnit.millizes.toSeconds。但是,它返回一个长值,因此将1毫秒转换为0秒,而不是0.001秒


当我阅读时,我可以从某种程度上提取出时间单位是专门用来“走另一条路”的。尽管我不明白他们为什么选择这种策略,但我正在寻找一种(懒惰的!)替代方案来进行这种类型的转换

嗯,我想他们已经尽力掩盖了“最坏的情况”。例如,如果尝试将1天转换为纳秒,则该数字将大于最大整数

System.out.println(TimeUnit.DAYS.toNanos(1)); //86400000000000
System.out.println(Integer.MAX_VALUE);        //21474836477

但我同意,在极端情况下,数字可能比最大长整数还要大。至少javadoc警告用户这一点。

投票结束主要是基于意见,我们无法猜测API设计师做出的决定。然而,对我来说,long似乎比int更符合逻辑,例如,考虑到使用意图(例如使用
Object.wait(long)
),浮点数不符合逻辑;然而,这些只是猜测,并不是事实答案。在当今的64位处理器中,使用
int
不会节省任何东西,但使用
int
可能会导致溢出(在极端情况下甚至是长的)。我理解在移动到“更精细”的单位(例如从秒到毫秒)时选择长的返回值,但当以另一种方式(例如从毫秒转换为秒)转换时,这对我来说没有意义。我会更新我的问题。@MarkRotteveel同意,但如果有关于这个决定的任何信息,我很感兴趣。我改变了问题以反映我真正需要的。@Timo首先,所有方法都是在枚举级别定义的,因此它们同样适用于
毫秒
(例如
TimeUnit.DAYS.toSeconds(250000)
大于
int
),其次是
TimeUnit.miconds.toSeconds(Long.MAX\u值)当您使用
int
时,
将溢出,最后它提供了接口的一致性(例如使用所有相同的类型)。谢谢!鉴于以上讨论,我已经改变了我的问题。你知道一个好的替代转换工具吗?如果性能不是问题,我认为你可以得到当前的实现,用BigDecimals替换long。你对javax.measure(或JScience,它是参考impl.)有什么经验吗?