首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在API中定义金额

如何在API中定义金额
EN

Stack Overflow用户
提问于 2015-03-30 08:15:14
回答 2查看 4.5K关注 0票数 25

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

  • 我们应该发射基地单位还是小单位?(数额与amount_cents之比)
  • 我们应该把数字表示成整数/小数还是字符串?

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

  1. 将金额作为字符串发送如下:"5.85“(带有基本单位的字符串)
  2. 以次要单位发送金额: 585 (以次要单位表示金额的整数)

我要在这两个人之间来回走动。因此,我检查了其他API使用了什么,并列出了以下列表:

  • 条形:带小单位的整数
  • Braintree:带有基本单位的字符串
  • :使用基本单位的字符串
  • Paypal:带有基本单位的字符串
  • 亚马逊支付:与基本单位的字符串
  • 货币云:带有基本单位的字符串
  • 2签出:带基本单位的字符串
  • 小单位整数
  • 德沃拉:带基单位的十进制
  • GotoBilling:奇怪的启发法!“金额可以用小数表示,也可以不加小数。如果没有小数点,则假定小数点有两(2)位(1.00 = 100)”
  • GoCardless:带有基本单位的字符串
  • Intuit:在请求中使用基本单位的十进制,在响应中带有基单位的字符串
  • 克拉纳:带小单位的整数
  • MasterCard:带有小单位的整数
  • Paynova:带有基本单位的字符串
  • 罗杰斯催化剂:带碱基单位的串
  • WePay:带有基本单位的字符串
  • 文莫:带基单位的十进制

因此,在18个样本API中,4个使用小单位,13个使用基本单位,1个使用难以理解的混合物。在使用基本单位的13个单位中,10个是以引号字符串的形式发送的,3个是以未引用的小数形式发送的(如果你看Intuit,实际上是2个半)。

我个人觉得不得不解析像"8.20“这样的字符串是不舒服的,因为如果您解析这个字符串,它就变成”8.19999999.“如果你犯了使用浮标的错误。所以我倾向于只发送整数。但我不认为这是一个很好的论点,而且我看到API一般都是以基本单元作为字符串。

你有什么好的论据支持/反对每种格式吗?

EN

回答 2

Stack Overflow用户

发布于 2015-03-30 08:21:48

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

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

如果发送二进制数据,整数将比字符串小得多。如果您发送xml,最好还是定义一个字符串(文件在发送之前可能是压缩的,对不对?),尝试将其作为“货币”类型,而不是将其作为完整字符串列出。

票数 1
EN

Stack Overflow用户

发布于 2015-03-30 08:24:04

哪种数据类型是最好的取决于您的使用。对于计算,整数或双值将更快,跳过解析步骤。如果通过网络发送数据是您的目标,那么最好使用字符串。

也就是说,任何功能都应该使用任何一种方法都可以实现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29341337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档