以太坊中的计量单位及相互转换
以太币单位转换
首先我们来看一下以太币单位之间的转换,以太币的最小单位为wei,1个eth相当于10的18次方wei。通常,大家也使用Gwei作为展示单位。比较常用的就是eth,Gwei和wei。
单位 | wei值 | Wei |
---|---|---|
wei | 1 | 1 wei |
Kwei (babbage) | 1e3 wei | 1,000 |
Mwei (lovelace) | 1e6 wei | 1,000,000 |
Gwei (shannon) | 1e9 wei | 1,000,000,000 |
microether (szabo) | 1e12 wei | 1,000,000,000,000 |
milliether (finney) | 1e15 wei | 1,000,000,000,000,000 |
ether | 1e18 wei | 1,000,000,000,000,000,000 |
十六进制转十进制 此转换方法为web3.toDecimal(hexString)。直接在控制台输入一下命令进行使用此函数进行转换。
> web3.toDecimal('0x16');
22
通过此函数将十六进制的0x16转换为十进制的22。
十进制转十六进制 转换函数:web3.fromDecimal(number)。
控制台命令及结果如下:
> web3.fromDecimal('22');
"0x16"
转换为BigNumber类型 【以太坊中的计量单位及相互转换】把给定数字或十六进制字符串转为 BigNumber 类型的实例。
> web3.toBigNumber('200000000000000000000001');
2.00000000000000000000001e+23
此处转换需要注意的是BigNumber只会保留小数点后20位,超过20位的部分将会被截取掉。
以太币单位转换 上面表格中列出了以太币之间的单位进制,同样可以使用web3进行相应的转换,基本函数为web3.fromWei和web3.toWei(number, unit)。
具体实例如下:
// wei转换为ether
> web3.fromWei('22000000000000', 'ether');
"0.000022"// wei转换为kwei
> web3.fromWei('1000','kwei')
"1"// wei转换为gwei
> web3.fromWei('1000000000','gwei')
"1"// ether转换为wei
> web3.toWei('1','ether')
"1000000000000000000"
其他的相关转换大家可自行尝试,下面列出相应的转换种类:
- kwei/ada
- mwei/babbage
- gwei/shannon
- szabo
- finney
- ether
- kether/grand/einstein
- mether
- gether
- tether
> eth.sendTransaction({from:eth.coinbase,to:"0x2bda4364bb076187f0ef0067a61ccb95d636e383",value:web3.toWei(1,"ether")})
通过查询余额的方法,我们也可以看出区块链中存储这些数据的单位为wei。
> web3.eth.getBalance(eth.coinbase)
267999999999999999999
代币中的单位
在编写ERC-20的代币合约时我们可以指定代币的单位,比如:
uint8 public decimals;
这里就指定了代币单位精确到小数点后几位。比如精确到小数点后3位,那么1个代币存储时就是1000个最小单位的值。
推荐阅读
- 热闹中的孤独
- JS中的各种宽高度定义及其应用
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- Android中的AES加密-下
- 放下心中的偶像包袱吧
- C语言字符函数中的isalnum()和iscntrl()你都知道吗
- C语言浮点函数中的modf和fmod详解
- C语言中的时间函数clock()和time()你都了解吗
- 如何在Mac中的文件选择框中打开系统隐藏文件夹