You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中将表示分钟的double类型转换为秒数int类型的实现方案

Java 分秒格式double转总秒数实现方案

核心注意点

你传入的33.51属于「整数位为分钟数、小数位为秒数」的分秒拼接格式,不是十进制分钟表示,因此不能直接整体乘以60计算,必须拆分两部分分别统计

修改步骤

  • 调整Runner类的time字段类型为double,适配double类型的时长输入
  • 重写getTime()转换逻辑,拆分分钟部分和秒部分计算总秒数,同时增加浮点精度处理避免误差
  • 可重载构造方法,同时兼容原有int类型时长的输入场景

完整修改后代码

public class Runner {
    String membershipID;
    String name;
    double time;

    // 兼容原有int类型时长的构造方法
    public Runner(String mem, String na, int ti) {
        this.membershipID = mem;
        this.name = na;
        this.time = ti;
    }

    // 新增支持double类型时长的构造方法
    public Runner(String mem, String na, double ti) {
        this.membershipID = mem;
        this.name = na;
        this.time = ti;
    }

    public String getMembershipID() {
        return membershipID;
    }

    public String getName() {
        return name;
    }

    public int getTime() {
        // 拆分整数部分:分钟数
        int minutes = (int) time;
        // 拆分小数部分:秒数,乘以100后四舍五入避免浮点精度误差
        int seconds = (int) Math.round((time - minutes) * 100);
        // 计算总秒数返回
        return minutes * 60 + seconds;
    }

    public static void main(String[] args) {
        // 原有int类型输入不受影响
        Runner a = new Runner("RF23", "George Formsby", 33);
        Runner b = new Runner("RG89", "Neil Innes", 32);
        Runner c = new Runner("ST200", "Sandy Denny", 30);
        // 新增double类型输入测试,33.51对应33分51秒
        Runner d = new Runner("TT001", "Test User", 33.51);

        System.out.println("MembershipID is: " + a.getMembershipID());
        System.out.println("Name is: " + a.getName());
        System.out.println("Time in seconds: " + a.getTime());
        System.out.println("MembershipID is: " + b.getMembershipID());
        System.out.println("Name is: " + b.getName());
        System.out.println("Time is: " + b.getTime());
        System.out.println("MembershipID is: " + c.getMembershipID());
        System.out.println("Name is: " + c.getName());
        System.out.println("Time is: " + c.getTime());
        // 测试double输入的转换结果,输出应为2031
        System.out.println("MembershipID is: " + d.getMembershipID());
        System.out.println("Name is: " + d.getName());
        System.out.println("Time is: " + d.getTime());
    }
}

效果验证

输入33.51时,拆分得到分钟数33、秒数51,总秒数计算为33*60+51=2031,符合预期。

内容的提问来源于stack exchange,提问作者CrimsonRainer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 05:18:03