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

如何在Truffle测试中使用Web3.js完成基础算术运算

问题根源

web3.utils.toWei() 在 Web3.js v1.x 版本中,入参为字符串时默认返回字符串类型的数值,直接使用 + 运算符会执行字符串拼接逻辑,而非算术加法。
调用 add/mul 等方法报错的原因是未先将待运算的数值转为BN(BigNumber)实例,只有BN实例挂载了这些算术运算方法。

正确实现方案

  1. 从web3工具库引入toBN方法
  2. 所有参与运算的数值统一转为BN实例后再调用对应算术方法
  3. 运算完成后可按需转为字符串/常规数值使用
const { toBN, toWei } = web3.utils;

// 转为wei单位后转成BN实例
const firstNumber = toBN(toWei('1', 'ether')); 
// 所有运算参数都要转为BN实例后再执行加法
const sum = firstNumber.add(toBN(100));
// 输出结果时调用toString()获取完整数值
console.log(sum.toString()); // 输出结果:1000000000000000100

运算注意事项

  • 以太坊相关的大数值运算禁止直接使用JS原生算术运算符,数值超过2^53时会出现精度丢失,必须通过BN实例处理
  • 算术方法的所有入参都必须为BN实例,否则会抛出调用错误
  • 减法、乘法、除法可对应使用BN实例的sub()、mul()、div()方法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:54:04