问题描述
我想知道我如何进行销售佣金的计算,我需要这样做,但我没有。存在与目标相关的出售价值,起初它将小于50%,卖方仅获得1%的收益,而与目标相关的出售价值为50%至70%,卖方获得2.5%的收益。 if的空白在哪里,我不知道要放置什么,因为我不知道如何将少于一半的值甚至一个值放在另一个,在这种情况下为50到70 %,e,从71到100%,您将获得3.5%。 我认为“销售目标”属性必须包含在方法中,因为程序必须了解所售出的价值不到目标的一半。
public class Salesman {
//defining attributes
private String name;
private double salesGoal;
private double totalSold;
public double calculateCommission() {
double soldValue;
if (totalSold < ) {
soldValue =(totalSold * 1.01);
}else if(totalSold >= ){
soldValue =(totalSold * 1.025);
}else if(totalSold >= ){
soldValue =(totalSold * 1.035);
}else{
soldValue = 0;
}
return soldValue;
}
}
解决方法
也许这就是您所追求的:
private String name;
private double salesGoal;
private double totalSold;
public double calculateCommission() {
double seventyPercentOfSalesGoal = salesGoal * 0.70;
double fiftyPercentOfSalesGoal = salesGoal * 0.50;
if (totalSold >= seventyPercentOfSalesGoal) {
return totalSold * 0.025;
} else if (totalSold >= fiftyPercentOfSalesGoal) {
return totalSold * 0.01;
}
return 0;
}
您需要检查较低的阈值之前是否已通过较高的阈值。我还删除了该变量,因为您可以在知道要计算的内容后立即返回一个值。
,输入和输出的内容决定了您的方法签名。
public double calculateCommission(double soldValue,double goal) {
return 0d;
}
然后创建某种流程图
public double calculateCommissionRate(double soldValue,double goal) {
double ratio = soldValue / goal;
if (ratio < 0.5) return 0.01;
if (ratio < 0.7) return 0.025;
return 0.035;
}
尝试将您的目标或销售目标视为蛋糕。您需要知道的是已售出多少蛋糕(ratio = sold/cake
)。那是要计算的第一件事。
而且百分比实际上也是一个比率。 "pro-cent" means x/100。所以50%实际上是50/100,实际上是0.5。
因此,我们可以直接将这两个比率进行比较。
我刚刚意识到,您可能还希望应用佣金率。
在这种情况下,您必须将其乘以soldValue
。
public double calculateCommission(double soldValue,double goal) {
double commissionRate = calculateCommissionRate(soldValue,goal);
return soldValue * commissionRate;
}
最后的评论(超出范围):double
可以存储比率,但是由于各种舍入方式,对于货币值(即方法的输入)不是很好错误。您可能要使用BigDecimal
或Integer
,然后将数字乘以100来存储小数。向最终用户显示您的值仅是使用适当的格式化程序即可。