gpt4 book ai didi

java - 在 java 中将美元(大十进制)转换为美分(整数)的最佳方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:43:15 31 4
gpt4 key购买 nike

我必须将我的 Web 应用程序与支付网关集成。我想输入以美元为单位的总金额,然后将其转换为美分,因为我的支付网关库接受以美分为单位的金额(Integer 类型)。我发现 Java 中的 Big Decimal 是操纵货币的最佳方式。目前我将输入设为 50 美元并将其转换为 Integer,如下所示:

BigDecimal rounded = amount.setScale(2, BigDecimal.ROUND_CEILING);
BigDecimal bigDecimalInCents = rounded.multiply(new BigDecimal("100.00"));
Integer amountInCents = bigDecimalInCents.intValue();

这是将美元转换为美分的正确方法吗?还是我应该以其他方式进行?

最佳答案

包含我的以下几点的最简单的是:

public static int usdToCents(BigDecimal usd) {
return usd.movePointRight(2).intValueExact();
}

我建议使用 intValueExact,因为如果信息丢失(如果您正在处理超过 21,474,836.47 美元的交易),这将引发异常。这也可用于捕获丢失的分数。

我还会考虑接受零分和四舍五入的值是否正确。我会说不,客户端代码必须提供有效的计费金额,所以如果我需要自定义异常(exception),我可能会这样做:

public static int usdToCents(BigDecimal usd) {
if (usd.scale() > 2) //more than 2dp
thrown new InvalidUsdException(usd);// because was not supplied a billable USD amount
BigDecimal bigDecimalInCents = usd.movePointRight(2);
int cents = bigDecimalInCents.intValueExact();
return cents;
}

关于java - 在 java 中将美元(大十进制)转换为美分(整数)的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30398092/

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