class Faculty{
private String name;
private float basicSalary;
private float bonusPercentage;
private float carAllowancePercentage;
public Faculty(String name , float basicSalary){
this.name = name;
this.basicSalary = basicSalary;
this.bonusPercentage = 4f;
this.carAllowancePercentage = 2.5f;
}
public double calculateSalary(){
float bonus = ( (bonusPercentage / 100 ) * getBasicSalary() );
float carAllowance =( ( (float)carAllowancePercentage / (float) 100 ) * getBasicSalary() );
return (getBasicSalary() + bonus + carAllowance);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getBasicSalary() {
return basicSalary;
}
public void setBasicSalary(float basicSalary) {
this.basicSalary = basicSalary;
}
public float getBonusPercentage() {
return bonusPercentage;
}
public float getCarAllowancePercentage() {
return carAllowancePercentage;
}
public void setCarAllowancePercentage(float carAllowancePercentage) {
this.carAllowancePercentage = carAllowancePercentage;
}
}
public class overriding1 {
public static void main(String[] args) {
Faculty f = new Faculty("henry",30500.0f);
System.out.println(f.calculateSalary());
}
}
每当我运行它时,它都会显示以下输出,但预期输出不同。我检查了所有可能但没有任何效果。
我得到输出:32482.5 但预期的输出是:32482.498046875
请帮我解决这个问题
更新:doublefacultySalary= this.getBasicSalary() (1+ (this.getBonusPercentage()/100)+(this.getCarAllowancePercentage()/100));*
当我使用上面更新的公式运行时,我得到了预期的输出,谁能向我解释为什么两个公式都给出这样的值,因为逻辑上两者是相同的。
答案 0 :(得分:0)
32482.5 是正确答案。
基本津贴:30,500
奖励:30500 * 4.0 / 100 = 1220.0
汽车津贴:30500 * 2.5 / 100 = 762.5
总计:32482.5。
你为什么期望 32482.498046875?看起来所有这些计算都以浮点值可以表示的数字结尾,而不会损失任何准确性。