gpt4 book ai didi

database-design - 将货币值(value)存储为美分/小单位有什么缺点?

转载 作者:行者123 更新时间:2023-12-03 11:59:04 25 4
gpt4 key购买 nike

我注意到一些金融 api 像用于信用卡处理的 stripe api 要求以美分形式传递金额,这似乎是一个很好的简化,这让我想知道为什么我不在我目前的应用程序中的任何地方都做同样的事情在我的 Java 代码中使用带有 Postgres 和 BigDecimal 的数据库 NUMERIC 无限长度,但我被以美分存储货币的简单性所吸引。

  • 将钱存为美分有什么缺点。
  • 有没有以钱为分的具体操作?
  • 以美分存储的货币是否适用于所有世界货币?
    考虑不同的货币会变成一团糟,如果
    还有什么特殊情况?
  • 是否有一个很好的 java 库可以使用
    一分钱一分货?

  • 更新 对于没有美分的货币,我们可以将问题概括为将货币存储为货币的最小次要单位,因此美分是美元,而其他货币则是任何等价物。

    最佳答案

    缺点是您不能表示小数单位。如果您正在执行利息计算等,这是一个问题。但是,如果您进行的是“真钱”交易,这个问题就会迎刃而解。

    货币是否为非十进制并不重要 - 只要有一个最小单位,您就可以用它来表示任何其他金额。如果相关,您可能需要更聪明地以人类可读的格式显示,但这是一个单独的问题。

    事实上,使用最小单位可能会简化执行转换,因为您可以计算出每个货币对的最小单位之间的转换率。当然,一旦您进入转换率,您最终将需要再次使用 BigDecimal(或类似的)。

    因此,总而言之,最好同时使用最小单位作为您的面额,并使用 BigDecimal 来处理可能出现的小数部分。不要使用 IEEE 浮点数,因为它们不能正确表示所有十进制数。这将导致令人不安的错误类型。

    关于database-design - 将货币值(value)存储为美分/小单位有什么缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18934774/

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