如何找出价格/额外1000美元存款

时间:2013-04-17 03:58:49

标签: java logic business-logic

我想在java中转换的公式是

超额现金存款费= [(输入$现金存款) - (计划中包括的现金存款)] / 1000 *(价格/每存入额外1000美元)

我写的代码是

int inputCash = 50;
int cashDepsitFromPlan = 40;
int cashDepositOverLimitFee = 2.5;

cashDepositOverLimit = (double) ((inputCash -cashDepsitFromPlan) / 1000) * ???;

我如何找到???(价格/每额外存入1000美元)

2 个答案:

答案 0 :(得分:2)

如果您正在使用浮点数,则可能需要重新考虑使用int数据类型。

这一开始会引起各种各样的悲痛:

int cashDepositOverLimitFee = 2.5;

最好将double用于所有事情。

在此处查找未知变量方面,这是您的业务规则特有的内容,此处未显示。

我猜测price/$1000数字与您的cashDepositOverLimitFee变量密切相关,例如每增加1000美元就会达到2.50美元。

这会产生等式:

                       inputCash - cashDepsitFromPlan
cashDepositOverLimit = ------------------------------ * cashDepositOverLimitFee
                                   1000

这是有道理的。右侧的第一个术语是您在计划之上存入的超过1000美元的数量。您可以通过费率(例如2.50美元或2.5%)来乘以实际费用。

然而,如上所述,根据我们所看到的情况,我们无法判断它是2.50美元还是2.5%。你必须回到业务上去确定。

答案 1 :(得分:1)

你必须用代数方法操纵方程式来解决这个问题。

cashDepositOverLimitFee = (double) ((inputCash -cashDepsitFromPlan) / 1000) * ???
cashDepositOverLimitFee*1000 = (double) (inputCash -cashDepsitFromPlan) * ???
(cashDepositOverLimitFee*1000) / (double) (inputCash -cashDepsitFromPlan) = ???
??? = (cashDepositOverLimitFee*1000) / (double) (inputCash -cashDepsitFromPlan)

请注意,必须保留(double)强制转换,以确保浮点结果。