gpt4 book ai didi

java - 双时间单位转换

转载 作者:行者123 更新时间:2023-11-29 07:27:22 25 4
gpt4 key购买 nike

TimeUnit.toSeconds 在结果 > 1 时运行良好。但是,因为我们处理的是长整数,如果结果介于 0 和 1 之间(不包括),我们将得到 0。 java SDK 函数是否为我们处理双重转换?

我知道我可以通过乘以或除以适当的 double 来自行执行这些转换。但是,它很容易出错,而且读起来不好。我更喜欢使用 Java SDK 中的现有函数,类似于 Java 的 TimeUnit。

展示我的情况的最小示例:

import java.util.*;
import java.util.concurrent.*;
public class Main {
public static void main(String[] args) {
System.out.println(TimeUnit.MILLISECONDS.toSeconds(1));
}
}

输出:

0

我想要一个处理返回 0.001 的 double 的函数

最佳答案

korolar’s suggestion太好了,值得成为答案并具有正确的格式。它给你大约一半你想要的。如果您要自己进行乘法或除法,您至少可以从库枚举中获取要乘法或除法的数字。

public static double millisToSeconds(long millis) {
return (double) millis / TimeUnit.SECONDS.toMillis(1);
}

现在 millisToSeconds(1) 给出 0.001。我同意 JB Nizet 和 VGR 的评论,即您应该将计算包装在一个名称好听的方法中,以保持代码的可读性。如果您希望该方法更通用:

public static double convertTimeUnit(double amount, TimeUnit from, TimeUnit to) {
// is from or to the larger unit?
if (from.ordinal() < to.ordinal()) { // from is smaller
return amount / from.convert(1, to);
} else {
return amount * to.convert(1, from);
}
}

现在 convertTimeUnit(1, TimeUnit.MILLISECONDS, TimeUnit.SECONDS) 和以前一样给出 0.001,而 convertTimeUnit(1, TimeUnit.SECONDS, TimeUnit.MILLISECONDS) 给出 1000.0 .

关于java - 双时间单位转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49261644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com