价值四舍五入

时间:2021-01-30 13:45:46

标签: java types

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

image

请帮我解决这个问题

更新:doublefacultySalary= this.getBasicSalary() (1+ (this.getBonusPercentage()/100)+(this.getCarAllowancePercentage()/100));*

当我使用上面更新的公式运行时,我得到了预期的输出,谁能向我解释为什么两个公式都给出这样的值,因为逻辑上两者是相同的。

1 个答案:

答案 0 :(得分:0)

32482.5 是正确答案。


基本津贴:30,500
奖励:30500 * 4.0 / 100 = 1220.0
汽车津贴:30500 * 2.5 / 100 = 762.5
总计:32482.5。

你为什么期望 32482.498046875?看起来所有这些计算都以浮点值可以表示的数字结尾,而不会损失任何准确性。