【问题标题】:When should I use the bignumber library? [closed]我什么时候应该使用 bignumber 库? [关闭]
【发布时间】:2020-12-08 19:27:20
【问题描述】:

我正在尝试了解何时使用 bignumber 库。

问题 1)。众所周知,JavaScript 对 Number 类型的上限是 2^53,但它还有另一种类型 BigInt,它没有限制。为什么我们要使用 bignumber 库?是因为它也适用于小数吗?还有其他原因吗?

问题 2) 假设我有一个 x = new BigNumber(10000000000000000000);,现在我想将它乘以 30。我是否也应该先将 30 转换为 BigNumber,然后再相乘,还是这样:30 * x?似乎我没有将 30 转换为 BigNumber 并且它仍然可以正常工作。我什么时候应该使用 bignumber 库中的mul

【问题讨论】:

  • 这是一个库,如果它做你想做的事,你会使用它。这里没有硬性规定。如果需要,可以使用 BigInt 处理小数。
  • 问题是它为什么存在?它使哪些事情变得更容易?
  • 它存在,就像moment.js存在一样,有些人可能宁愿以不同的方式处理日期,如何在纯JS中做到这一点。但它存在的最大原因(请原谅双关语)可能是因为 BigInt 并不总是 JS 的一部分,而且我相信 BigNumber 已经存在了很长时间。如果你仍然想以 ie11 为目标,你可能想使用它,但如果是这样的话,我个人会转译和 polyfill。
  • 如果您希望问题包含“它为什么存在”,那么您应该编辑您的问题。虽然这将接近基于意见,因为为什么某物存在通常只有设计师可以回答。
  • 我看不出这个问题有什么问题以及为什么它被否决并关闭。

标签: javascript bignum


【解决方案1】:

我们为什么要使用 bignumber 库?是因为它也适用于小数吗?

是的。 bignumber 库通常处理任意精度的浮点数,而 bigint 库(或内置数据类型)只能处理整数。
此外,在 JavaScript 中对 BigInt 的本机支持之前就已经存在很多实现大整数数学的库,这是该语言的一个相当新的补充。这也意味着在旧浏览器中需要一个库。

现在我想将它乘以 30。我是否也应该先将 30 转换为 bigNumber?

不,这通常不是必需的(但当然取决于库)。

这样可以吗:30 * x

不,这样不行。如果您使用的是 bignumer 库,则需要使用它的方法(如 x.multiply(30)),而不是仅适用于 JavaScript 的内置数据类型的 * 运算符。

【讨论】:

    猜你喜欢
    • 2012-12-23
    • 2021-07-13
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多