条纹货币 - 所有金额都以分 / 百分之一为单位,还是这取决于货币?

40

我正在编写代码,将从另一种支付处理器迁移到Stripe。

我知道当货币为美元时,Stripe 使用美分。所以 stripe(1000 USD) == $10.00。我认为欧元也是如此,stripe(1000 EUR) == € 10.00。

但是日元呢?100日元约等于1美元。那么我是发送10000日元给Stripe才能获得约为1美元的100日元呢?还是发送100日元就可以了?

有特殊的除数吗?任何货币都只用以100为单位计算吗?我在文档中找不到答案,我也不想向日本人收取$0.1或$1000的$10美元服务费。

阿联酋迪拉姆(AED)的计量方式是怎样的?他们最小的单位/硬币是1/10。 我应该乘以10吗?

1个回答

45

所有金额均以“最小通用货币单位”计算。虽然在大多数地方这个单位是美分,但在日本他们的货币没有小数点,所以amount=1(1 JPY),因为¥1是最小的货币单位。

更多信息可查看此文档


1
谢谢。我希望他们有真正的文档,而不是过时的支持问题。我更新了我的问题,询问AED(阿联酋迪拉姆,以十分之一为单位计价)的情况。 - jcampbell1
2
我会被狗咬的。没错,传递给Stripe的currency: 'usd'字段确实需要人们直觉地思考,..哦对了,他们期望$10.21被表示为1021...过度设计了。这里违反了KISS原则。 - Ronnie Royston
7
通常建议在处理货币时使用分。所有低级别的银行API也都是这样假定的。由于计算机不擅长添加小数(因为从二进制到十进制的小数无法完全转换,所以在许多语言中,.1 + .2 != .3),因此使用分会更好。 - Matthew Arkin
3
@RonRoyston 其实并不是这样。这是处理货币最简单的方法,特别是考虑到编程语言灾难的情况:https://hackernoon.com/js-wtf-with-math-79da9a941ec1 - Leap Hawk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接