gpt4 book ai didi

MongoDB - 十进制类型的值怎么样?

转载 作者:IT老高 更新时间:2023-10-28 11:06:20 26 4
gpt4 key购买 nike

我目前正在学习 MongoDB 并将其应用于一个小型金融相关项目。


当我阅读 MongoDB in Action ,它说:

The only other issue that commonly arises with BSON numeric types isthe lack of decimal support. This means that if you’re planning onstoring currency values in MongoDB, you need to use an integer typeand keep the values in cents.


我的金融相关产品会涉及一些货币值(value),但我对上述说法有点困惑或担心。以下是我的问题:

  1. 我可以在我的项目中对那些 货币值 使用 double 吗?
  2. 如果我直接对他们使用 double 会发生什么或后果?
  3. 如果十进制类型是金融产品的必备品,那么使用 MongoDB 是不是一个坏主意?
  4. 你需要使用整数类型并保持以美分为单位的值是什么意思?这是否意味着如果我要存储 1.34 美元,那么我应该存储 134 美分

最佳答案

如果您出于财务目的需要精确表示,则不适合使用 double 值或浮点值,因为小数部分会出现舍入误差。某些十进制值不能使用基于二进制的 float 表示,必须近似。

有关技术含量较低的介绍,请参阅 The trouble with rounding floating point numbers ;如果您想了解一下,请阅读 What Every Computer Scientist Should Know About Floating-Point Arithmetic .

建议使用整数类型(以美分存储值)是为了避免潜在的舍入错误。此方法在 Using a Scale Factor 的 MongoDB 文档中被描述为“modelling monetary data”。并且是 MongoDB 3.2 及更早版本的通用解决方法。

MongoDB 3.4 包含一个新的 Decimal BSON type它为操作货币数据字段提供了精确的精度。

关于MongoDB - 十进制类型的值怎么样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11541939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com