首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >浮点值上的TimeUnit

浮点值上的TimeUnit
EN

Stack Overflow用户
提问于 2018-02-28 03:29:32
回答 1查看 441关注 0票数 1

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

代码语言:javascript
复制
first is type (e.g. 'd', 'h')
second is value (e.g. "15", "0.5")

我创建了一个函数,将其转换为分钟数,如下所示:

代码语言:javascript
复制
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。

代码语言:javascript
复制
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这样的输入上工作,而不会在15h这样的输入上工作。有什么想法可以改进我的解决方案来处理浮点数吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-28 03:36:47

您可以使用TimeUnit计算出1 dh等到分钟的转换率,而不是使用幻数常量,如下所示

代码语言:javascript
复制
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;
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49016521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档