gpt4 book ai didi

currency - 如何在 API 中定义金额

转载 作者:行者123 更新时间:2023-12-02 04:09:49 29 4
gpt4 key购买 nike

我将创建一个包含金额的 API。我想知道最佳实践是什么,或者是否有人对某些格式有好的或坏的体验。

  • 我们应该传输基本单位还是次要单位? (金额与 amount_cents)
  • 我们应该将数字表示为整数/小数还是字符串?

我看到了以下两种可能性:

  1. 以字符串形式发送金额,如下所示:“5.85”(带有基本单位的字符串)
  2. 以次要单位发送金额:585(以次要单位表示金额的整数)

我在这两者之间来回走动。因此,我出去检查了其他 API 使用的内容,并得出了以下列表:

  • Stripe:带小单位的整数
  • Braintree:带有基本单位的字符串
  • Google 电子钱包:带基本单位的字符串
  • Paypal:带有基本单位的字符串
  • Amazon Payments:带有基本单位的字符串
  • 货币云:带有基本单位的字符串
  • 2checkout:带有基本单位的字符串
  • Adyen:带有小单位的整数
  • Dwolla:带有基本单位的十进制
  • GotoBilling:奇怪的启发式! “金额的格式可以包含或不包含小数。如果没有给出小数,则假定为两 (2) 位小数 (1.00 = 100)”
  • GoCardless:带有基本单位的字符串
  • Intuit:请求中带有基本单位的十进制,响应中带有基本单位的字符串
  • Klarna:带有小单位的整数
  • MasterCard:带有小单位的整数
  • Paynova:带有基本单位的字符串
  • Rogers Catalyst:带有基本单位的字符串
  • WePay:带有基本单位的字符串
  • Venmo:带基本单位的十进制

因此,在 18 个采样 API 中,4 个使用次要单位,13 个使用基本单位,1 个使用难以理解的混合单位。在使用基本单位的 13 个用户中,有 10 个将它们作为带引号的字符串传输,3 个作为不带引号的小数传输(如果你查看 Intuit,实际上是 2 个半)。

我个人对解析像“8.20”这样的字符串感到不舒服,因为如果你解析这个字符串,如果你错误地使用了 float ,它就会变成“8.19999999...”。所以我倾向于只发送整数。但我不认为这是一个很好的论点,而且我发现 API 通常倾向于使用基本单位作为字符串。

对于每种格式,你有什么好的论据吗?

最佳答案

整数会吃掉点,那就少了一个字节:D 整数将有一个 max_int,你有足够富有的人可能会溢出吗?

将货币字符串解析为 float 的人无论如何都会将 int 转换为 float 。

如果发送二进制数据,整数将比字符串小得多。如果您无论如何发送 xml,您也可以将其定义为一个字符串(该文件可能在发送之前被压缩,对吧?),尝试将其设置为“货币”类型,而不是将其列为完整字符串。

关于currency - 如何在 API 中定义金额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29341337/

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