我正在使用 TimeUnit.MILLISECONDS.toDays(ms) 将毫秒时间量转换为天数,但阅读 JavaDoc 我注意到它基于.convert()
并失去精度
将给定单位中的给定持续时间转换为此单位。从更细粒度到更粗粒度的转换会截断,因此会丢失精度。例如,将 999 毫秒转换为秒的结果为 0。从粗粒度到细粒度的转换,如果参数为负数,则会在数值上溢出饱和到 Long.MIN_VALUE,如果为正数,则为 Long.MAX_VALUE。
真是没想到,我的5分钟(300000ms)变成了0天。直接的解决方案是写这个
double days= (double)ms/1000*60*60*24;
这很糟糕,我认为没有必要,但它确实有效。有什么建议吗?我可以使用其他任何功能吗?
ps:我不是在等你告诉我应该将这些数字放入静态变量中,我试图了解哪种解决方案是一个好的解决方案。提前致谢