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

JavaScript出租车费计算函数求助:测试用例未通过排查

出租车费计算函数错误排查

需求回顾

Northdrivers Taxi Company™️ 定价规则:

  • 时长≤3分钟:基础费用500便士(5英镑)
  • 超过3分钟部分:每分钟额外收取70便士
  • 行程时长需向上取整为整数分钟

用户提交的代码

function calculateTaxiFare(seconds) {
    // Your code goes here...
    const flatFare = 500
    
    const minutes = Math.ceil(seconds / 60)

    console.log(minutes)

    if(minutes<=3){
        return(flatFare)
    }
    if(minutes>3){
        let newMin = minutes-3;
        return (flatFare + (newMin * 70))
    }
}

遇到的错误

传入非整分钟数时返回总费用
✕ AssertionError: expected 920 to equal 990
传入非整分钟数时返回总费用。时长必须始终向上取整
✕ AssertionError: expected 500 to equal 570

问题分析与修正

从错误信息可以看出,代码核心问题是向上取整逻辑未正确执行,导致非整分钟数的时长被低估,进而少算额外费用:

  • 传入181秒(3分1秒)时,正确向上取整应为4分钟,费用应为570便士,但代码返回500便士,说明计算出的minutes为3而非4。
  • 传入541秒(9分1秒)时,正确向上取整应为10分钟,费用应为990便士,但代码返回920便士,说明计算出的minutes为9而非10。

可能的错误原因

  1. 误将Math.ceil写成Math.floor或Math.round,导致无法正确向上取整。
  2. 使用了整数除法seconds // 60后再套Math.ceil,先丢失小数部分导致ceil失效。

修正后的代码

确保正确使用Math.ceil(seconds / 60)实现向上取整:

function calculateTaxiFare(seconds) {
    const flatFare = 500;
    const minutes = Math.ceil(seconds / 60);

    if (minutes <= 3) {
        return flatFare;
    } else {
        const extraMinutes = minutes - 3;
        return flatFare + extraMinutes * 70;
    }
}

验证用例

  • 输入181:Math.ceil(181/60)=4,返回500 + 70 = 570,符合预期。
  • 输入541:Math.ceil(541/60)=10,返回500 + 7*70 = 990,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 01:49:57