我想在java中转换的公式是
超额现金存款费= [(输入$现金存款) - (计划中包括的现金存款)] / 1000 *(价格/每存入额外1000美元)
我写的代码是
int inputCash = 50;
int cashDepsitFromPlan = 40;
int cashDepositOverLimitFee = 2.5;
cashDepositOverLimit = (double) ((inputCash -cashDepsitFromPlan) / 1000) * ???;
我如何找到???(价格/每额外存入1000美元)
答案 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)
强制转换,以确保浮点结果。