如何在JavaScript中将Decimal128值转换为数字?

4
我正在从 MongoDB 数据库 (MongoDB Driver 3.3) 查询数据。一些值以 Decimal128 格式存储。问题是,返回的不是数字,而是以下对象:
value: Decimal128 {
  _bsontype: 'Decimal128',
  bytes: <Buffer 80 7c 45 c7 c6 02 00 00 00 00 00 00 00 00 3e 30>
}

我发现没有将这个对象转换为可读的数字(本地JavaScript 64位数字)的函数。有人知道如何实现吗?

这是在 Node 还是浏览器中? - matthew-e-brown
@matthew-e-brown 这是 Node。 - Simon
@T.J.Crowder,是的,我也看到了这个问题。问题在于我没有使用mongoose,而是使用原生驱动程序。所以这些答案对我没有帮助。 - Simon
1
@T.J.Crowder,你读得没错:)这是我的错,因为我引用了错误的对象。你能把它发表为答案,这样我就可以接受它了吗? - Simon
@Simon - :-) 好的!我已经恢复了我曾经发布过的答案。很高兴能帮到你! - T.J. Crowder
1个回答

4
您曾经表示过对于这个问题的答案不适用于您,因为您“没有使用mongoose而是本地驱动程序”。我得承认我还没有接触过Mongoose或MongoDB。我相信你所说的这个问题的答案在这里并不适用。

但是它们的概念是一样的。 本地驱动程序 Decimal128 也有一个toString,返回数字字符串版本 (尽管文档没有明确说明),您可以通过任何通常的方式将其转换为数字。显然,该转换会有损失(这是无法避免的),但我假设你知道这一点。

所以假设 dec 包含该数字:

const num = +dec.toString(); // Unavoidably, this is a lossy conversion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接