当创建一个应用程序时,在用户友好的字符串(通常显示为ether)和机器可读的值(合约和数学公式所依赖的,通常使用wei)之间进行转换是很有用的
例如,一个钱包通过ether显示余额,在用户界面中用gwei显示gas价格,但是当发送一个交易时,两者都必须用wei表示。
parseUnits是将ether表示的字符串解析成wei表示的字符串, 例如将1.1
解析为wei表示的BigNumber,并且在用户输入值时非常有用,例如发送1.1 ether。
formatUnits是将BigNumberish解析成ether表示的字符串,这在显示余额时非常有用。
Unit可以指定为一个数字,它表示小数点位数。
例子:
- 1 ether 用 wei 表示, 有 18 个小数位 (即 1 ether 表示成 1018 wei)
- 1 bitcoin 用 Satoshi 表示,有 8 个小数位 (即 1 bitcoin 表示成 108 satoshi)
还有几种常见的命名单位,ethers中 可以使用它们的name(string类型)进行操作。
Name | Decimals | |
wei | 0 | |
kwei | 3 | |
mwei | 6 | |
gwei | 9 | |
szabo | 12 | |
finney | 15 | |
ether | 18 |
返回一个由3位数字组成的,并且用,
分隔的字符串.
commify("-1000.3000");
// '-1,000.3'
返回格式化后字符串形式表示的值, 如果是数字number指定,则格式化为对应的小数位数; 如果是字符串string指定,则格式化为 string name 对应的单位;。
const oneGwei = BigNumber.from("1000000000");
const oneEther = BigNumber.from("1000000000000000000");
formatUnits(oneGwei, 0);
// '1000000000'
formatUnits(oneGwei, "gwei");
// '1.0'
formatUnits(oneGwei, 9);
// '1.0'
formatUnits(oneEther);
// '1.0'
formatUnits(oneEther, 18);
// '1.0'
等价于调用formatUnits(value, "ether")
。
const value = BigNumber.from("1000000000000000000");
formatEther(value);
// '1.0'
返回BigNumber表示的值, 如果是数字number指定,则解析为对应的小数位数; 如果是字符串string指定,则解析为 string name 对应的单位。
parseUnits("1.0");
// { BigNumber: "1000000000000000000" }
parseUnits("1.0", "ether");
// { BigNumber: "1000000000000000000" }
parseUnits("1.0", 18);
// { BigNumber: "1000000000000000000" }
parseUnits("121.0", "gwei");
// { BigNumber: "121000000000" }
parseUnits("121.0", 9);
// { BigNumber: "121000000000" }
parseEther("1.0");
// { BigNumber: "1000000000000000000" }
parseEther("-0.5");
// { BigNumber: "-500000000000000000" }
The content of this site is licensed under the Creative Commons License. Generated on January 11, 2023, 9:24pm.