gpt4 book ai didi

java - 用Java计算交易费用

转载 作者:行者123 更新时间:2023-11-30 05:57:46 24 4
gpt4 key购买 nike

假设您有一个为每个用户保持平衡的网站。您可以让每个用户选择通过 PayPal、Amazon FPS、Authorize.NET eCheck 和信用卡将钱存入他们的余额,也许还有一次。

以上各公司均收取费用。由于您是接收方,您需要承担费用(自适应 PayPal API 除外,您可以指定谁将支付费用)。

假设网站用户(发件人)将向您存入 1000.00 美元并让 2.9% 的拣货费加上 0.30 美元固定费 = -29.30 美元因此接收者(网站所有者)最终获得 970.70 美元

如果您尝试收取 1029.30 美元,您最终会收到 999.1503 美元如果您尝试收取 1031.11 美元,最终会收取 1000.90781 美元,这是可以接受的(这是当费用增加 0.181% 至 3.081% + 0.30 时)

所以这个问题是,在Java方法中计算0.181%的最佳方法是什么

我知道这更多的是数学问题而不是 Java 问题,但是用于猜测最佳费用百分比的最佳算法是什么,这样最终值将尽可能接近网站用户尝试的最终值存款。

因此,该方法应采用实际费用 2.9%(乘法为 0.029)、固定费用 0.30 用户尝试存入的金额,并计算出尽可能接近存款的最终收费金额金额。

我一直在尝试增加 2.9%,直到扣除费用后稍微更高。

更新

根据以下答案,我编写了此方法。任何进一步的建议都非常受欢迎:

public static float includeFees(float percentageFee, float fixedFee, float amount) {
BigDecimal amountBD = new BigDecimal(amount);
BigDecimal percentageFeeBD = new BigDecimal(1-percentageFee);
BigDecimal fixedFeeBD = new BigDecimal(fixedFee);

return amountBD.add(fixedFeeBD).divide(percentageFeeBD, 10, BigDecimal.ROUND_UP)
.setScale(2, BigDecimal.ROUND_UP).floatValue();
}

最佳答案

每当您处理金钱时,您都会希望使用精度数据类型而不是 float 学。一般来说,在处理销售税等问题时,有一些关于如何处理问题的规则。

BigDecimal 具有您可以设置的参数来控制舍入行为,这可能会让您到达您需要去的地方。在任何情况下,像这样的数学永远不会精确到一分钱,但你应该能够保证你收取的费用永远不会超过一分钱。

关于java - 用Java计算交易费用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5214583/

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