Decimal128(高精度十进制)

最后更新:2026-10-09

Decimal128(高精度十进制)

Decimal128是MongoDB的高精度十进制类型,基于IEEE 754-2008十进制浮点标准,支持34位十进制有效数字。适合存储货币、利率等要求精确计算的数据,避免Double的二进制浮点误差。构造用`Decimal128('19.99')`或mongosh 5.0+的`NumberDecimal('19.99')`简写。

分类BSON 类型
MongoDB 版本1.0+
示例语言mongosh (Shell)

📝 语法

Decimal128("<十进制字符串>")
NumberDecimal("<十进制字符串>")  // mongosh 5.0+
{ price: Decimal128("19.99") }

返回值:返回一个Decimal128类型的BSON值

▶ 示例

请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):

// Decimal128:构造与精确比较
use shop
db.prices.insertOne({ item: 'apple', price: Decimal128('19.99') })
db.prices.find({ price: { $eq: Decimal128('19.99') } })

运行结果:

{ _id: ObjectId('...'), item: 'apple', price: Decimal128('19.99') }

📌 注意事项

📚 相关教程

❓ 常见问题

QDecimal128和Double有什么区别?
ADouble是二进制浮点,0.1无法精确表示;Decimal128按十进制存储,34位有效数字,适合金额等精确计算。
QDecimal128能存多大的数?
A指数范围约±6143,数值范围约±9.99×10^6144,远超任何业务场景。
Q为什么价格建议用Decimal128?
A金额要求十进制精确,Double累加会出现0.30000000000000004之类的误差,导致对账不平。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏