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

JavaScript调试挑战求助:修改指定行小数使测试全部通过

调试代码以满足三个测试用例要求

当前代码运行输出true、false、false,需修改第5、15、25、31行的十进制数字,使三个测试均输出true。

原代码如下:

import BigNumber from 'bignumber.js';

const denominationsMultiplier = {
  WEI: new BigNumber(1, 10).times(10).exponentiatedBy(18),
  GWEI: new BigNumber(1, 10).times(10).exponentiatedBy(8),
  ETH: new BigNumber(1, 10).times(10).exponentiatedBy(1),
}

function getFiatValueToRender({
  value,
  conversionRate = 1,
  fromDenomination,
  fromCurrency,
}) {
  let number = new BigNumber(value, 16);
  if (fromCurrency !== 'ETH') {
    number = number.multipliedBy(conversionRate);
  }
  if (fromDenomination !== 'WEI') {
    number = number.multipliedBy(
      denominationsMultiplier.WEI
        .dividedBy(denominationsMultiplier[fromDenomination])
    )
  }
  return number.toString(32);
}

function getResult(value) {
  return getFiatValueToRender({
    value,
    conversionRate: 1,
    fromDenomination: 'GWEI',
    fromCurrency: 'ABC',
  })
}

let x = 0

console.log(getResult(0) === '0')
console.log(getResult(1) === '59682f00')
console.log(getResult(10600.47) === 'e762bdf8a40')

调试修改点

  • 第15行:输入值0、1、10600.47都是十进制数,原代码用基数16解析会出错,将16改为10:

    let number = new BigNumber(value, 10);
    
  • 第5行:原WEI的计算结果为10^19,不符合1 WEI与ETH的标准换算关系(1 ETH = 10^18 WEI),将exponentiatedBy(18)的18改为17,得到正确的10^18:

    WEI: new BigNumber(1, 10).times(10).exponentiatedBy(17),
    
  • 第25行:测试用例的预期结果是十六进制字符串,原代码返回base32字符串,将32改为16:

    return number.toString(16);
    
  • 第31行:测试用例的预期结果对应输入值乘以1.5后的计算结果,将1改为1.5:

    conversionRate: 1.5,
    

修改后验证

修改完成后三个测试用例的逻辑均匹配预期:

  1. getResult(0):0经过所有计算后仍为0,转十六进制为'0',匹配预期。
  2. getResult(1):1×1.5=1.5,乘以WEI/GWEI=10^9得到1.5×10^9,转十六进制为'59682f00',匹配预期。
  3. getResult(10600.47):10600.47×1.5=15900.705,乘以10^9得到15900705000000,转十六进制为'e762bdf8a40',匹配预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:14:49