我有一个下游服务 (Stripe),它要求我以最小的货币单位(他们的文档中的零十进制货币)发送货币。即收取 $1 我会发送 { "currency": "USD", amount: 100 } 并收取 ¥100 我会发送 { "currency": "YEN", amount: 100 }
我的上游应用程序不想以这种方式处理货币并希望使用标准货币格式。有没有办法转换javax.money.MonetaryAmount成零十进制货币格式?
还是我必须手动编写转换?
我见过有些人使用 BigDecimal。这里它是一个函数。请为其编写一些测试:):
public static BigDecimal currencyNoDecimalToDecimal(int amount, String currencyCode) {
Currency currency = Currency.getInstance(currencyCode); // ISO 4217 codes
BigDecimal bigD = BigDecimal.valueOf(amount);
System.out.println("bigD = " + bigD); // bigD = 100
BigDecimal smallD = bigD.movePointLeft(currency.getDefaultFractionDigits());
System.out.println("smallD = " + smallD); // smallD = 1.00
return smallD;
}
public static void main(String[] args) {
int amount = 100;
String currencyCode = "USD";
BigDecimal dollars = currencyNoDecimalToDecimal(amount, currencyCode);
System.out.println("dollars = "+dollars);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
302 次 |
| 最近记录: |