我希望将任意值从毫秒转换为秒,而我的首选是TimeUnit.MILLISECONDS.toSeconds。然而,它返回一个长的,因此将1毫秒转换为0秒,而不是0.001秒。
在阅读the documentation时,我可以从某种程度上提取出,TimeUnit是专门用于“另一种方式”的。即使我不明白他们为什么选择这个策略,我也在寻找一个(懒惰!)可以进行这种类型转换的替代方法。
发布于 2014-09-12 22:27:33
好吧,我想他们已经试图掩盖“最坏的情况”了。例如,如果尝试将1天转换为nanos,则该数字将大于最大整数
System.out.println(TimeUnit.DAYS.toNanos(1)); //86400000000000
System.out.println(Integer.MAX_VALUE); //21474836477但不知何故,我同意在极端情况下,数字可能会比最大长整型更大。至少javadoc会就此向用户发出警告。
https://stackoverflow.com/questions/25810370
复制相似问题