如上图所示,如果在js(前端)中有太大的数,它会自动变成科学计数法,而这样的格式是无法和智能合约交互的!
以太坊中涉及wei单位的换算在web3.js中有个专门的函数:web3.utils.fromWei来处理代币的单位换算。在波场中却没有这个函数,有个tronWeb.fromSun(),但是它只有6位的小数位,wei单位是有18位的小数,差得太多了。你可以专门在前端中安装web3这个库来进行单位的换算。但是,web3这个库体积挺大(1M多),而且在波场中很多地方用不上,这样就显得有点鸡肋,还是自己写个函数来得划算。
wei单位的转换
const dataToWei = function(data){
let a = data * 1e18
return this.tronWeb2.toBigNumber(a).toFixed()
}
export {dataToWei}
const dataFromWei = function(data){
let b = data * 1e-18
return this.tronWeb2.toBigNumber(b).toFixed(6)
}
export {dataFromWei}
如上所示,这两个函数完美解决了wei单位的换算,和智能合约的交互也很顺畅。要注意智能合约中是没有小数位的,都要换算成整数,再除以相应的百分位。