微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 BigNumber 与 etherjs 返回 0

如何解决为什么 BigNumber 与 etherjs 返回 0

我正在使用 etherjs 的 BigNumber 并且我正在做这个非常简单的操作:

const cost = BigNumber.from(3)
    .div(BigNumber.from(1000))
    .mul(BigNumber.from(3));

  console.log(cost.toString());

输出'0',但应该是0.09。

为什么?我做错了什么?

解决方法

据我所知,Ethers 的 BigNumber 只能处理大整数。文档中没有提到小数值或精度或小数位数,所有这些都是您希望在处理小数值的库中看到的。另外,文档提到它目前在 Promise::new(env::current_account_id()).delete_account(beneficiary_address); 的实现中使用 BN.jsaddress(0) 不处理小数值。来自其文档:

注意:此库不支持小数。

这不是很清楚(大多数示例都是十进制的),它们可能意味着不支持小数值。

给你几个选择:

  1. 您可以使用您需要的精度倍数的单位。例如,如果您需要小数点右侧的两位精度,您可以使用乘以 100 的值。然后除以 100 得到整个输出部分,并对 100 进行余数运算以得到获取输出的小数部分(如果需要,使用前导 def func1(n1,n2): print(f'{n1} is greater than {n2}' if (n1> n2) else f'{n1} is greater than {n2}') print("Find which number is greater") num1 = int(input("Enter the first number: ")) num2 = int(input("Enter the second number: ")) func1(num1,num2) 进行格式化)。

  2. 有几个用于处理小数值的大数库,例如 bignumberbig.js

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?