首页 > 解决方案 > 如何正确地将 uint256 数字从前端传递给智能合约?

问题描述

我在前端有一些数学,效果很好,但是当数学计算像这样的大数字 1.1350120633522164e+23

我收到错误

未处理拒绝(错误):无效数值(arg="minDestinationAmount", coderType="uint256", value="1.1350120633522164e+23", version=4.0.44)

我用过BN

   const minDestBN = new BigNumber(input) 

   const  minDestinationAmount = minDestBN.multipliedBy(99).dividedBy(100)

res minDestinationAmoun = 1.1350120633522164e+23

如何在前端将这些数字 1.1350120633522164e+23 转换为 uint256 ?

标签: ethereumsolidityweb3

解决方案


这对我有帮助

    BigNumber.config({ EXPONENTIAL_AT: 1e+9 })
    let minDestinationAmount = minDestBN.multipliedBy(99).dividedBy(100)
    minDestinationAmount = String(minDestinationAmount)

但是很高兴听到最佳实践


推荐阅读