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

车辆年度里程折算逻辑求助:现有Swift代码计算存在偏差

车辆年度里程折算逻辑修正(Swift实现)

原函数的问题点

  • 车辆使用年限远大于总里程时逻辑完全倒置:原代码中carAge >= currentODO时返回carAge / currentODO,会得到远偏离实际的数值(比如104年车龄、1公里总里程,会返回104,实际应是年均不足1公里)
  • 新车场景(当年注册)的返回逻辑虽无错误,但需明确该场景的定义:当年注册的车辆,年度里程即为当前总里程

修正后的核心逻辑

始终以总里程 ÷ 使用年限为计算基准,仅处理两类边界情况:

  • 使用年限为0(当年注册):直接返回当前总里程(当年行驶的里程即为年度里程)
  • 总里程为0:返回0(无行驶记录)
  • 其他情况:总里程除以使用年限,采用整数除法(若需保留小数可改为返回Double类型)

修正后的Swift函数

func getOdoByYear(registration: Int, currentYear: Int, currentODO: Int) -> Int {
    guard currentODO > 0 else {
        return 0
    }
    
    let carAge = currentYear - registration
    guard carAge > 0 else {
        // 当年注册的车辆,年度里程即为当前总里程
        return currentODO
    }
    
    // Swift Int除法自动向下取整,符合年均里程的整数统计需求
    return currentODO / carAge
}

测试场景验证

  • 2015年注册、250000公里:250000 / (2024-2015) = 27777,函数返回27777,符合预期
  • 1920年注册、1公里:1 / (2024-1920) = 0,符合年均不足1公里的实际情况
  • 2024年注册、500公里:直接返回500,匹配当年行驶里程的定义

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 12:03:33