gpt4 book ai didi

java - float 值上的 TimeUnit

转载 作者:行者123 更新时间:2023-11-29 04:21:16 25 4
gpt4 key购买 nike

我创建了这样的方法,其中有 2 个输入。

first is type (e.g. 'd', 'h')
second is value (e.g. "15", "0.5")

我创建了将它转换为分钟的函数,如下所示:

public Float toMinutes(char type, String value) {
Float minutes = 0f;
switch (type) {
case 'd': {
minutes += Integer.parseInt(value) * 1440;
break;
}
case 'h': {
minutes += Float.parseFloat(value) * 60;
break;
}
case 'm': {
minutes += Integer.parseInt(value);
break;
}
default: {
return 0f;
}
}
return minutes;
}

我决定重构它,因为那些乘法对我来说看起来“丑陋”。我找到了一个更好的解决方案,称为 TimeUnit。

public Long toMinutes(char type, String value) {
Long minutesCounted = 0l;
TimeUnit tu = TimeUnit.MINUTES;
switch (type) {
case 'd': {
minutesCounted += tu.convert(Long.parseLong(value), TimeUnit.DAYS);
break;
}
case 'h': {
minutesCounted += tu.convert(Long.parseLong(value), TimeUnit.HOURS);
break;
}
case 'm': {
minutesCounted += tu.convert(Long.parseLong(value), TimeUnit.MINUTES);
break;
}
default: {
return 0l;
}
}
return minutesCounted;
}

问题是这个转换器只允许长值,所以现在它只适用于像 15h 这样的输入,而不适用于像 1,5h 这样的输入。关于如何改进我的解决方案以使用 float 的任何想法?

最佳答案

您可以使用 TimeUnit 来计算 1 dh 等到分钟的转换率,而不是使用魔法常量像这样

public float toMinutes(char type, String value) {
switch (type) {
case 'd':
return Integer.parseInt(value) * TimeUnit.DAYS.toMinutes(1);
case 'h':
return Float.parseFloat(value) * TimeUnit.HOURS.toMinutes(1);
case 'm':
return Integer.parseInt(value);
default:
return 0;
}
}

关于java - float 值上的 TimeUnit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49016521/

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