Java 使类型Double响应于整数和双类型赋值

Java 使类型Double响应于整数和双类型赋值,java,Java,我有以下代码: public class doubles() { private Double a; public Double getA(){ return this.a } public void setA(Double a){ this.a = a } } 例如,我希望变量“a”保留整数的属性 **setA(13)** **setA(13.32)** i、 e a=13,而非a=13.0 我仍然希望变量“a”具有

我有以下代码:

public class doubles() {
    private Double a;

    public Double getA(){
        return this.a 
    }
    public void setA(Double a){
      this.a = a
    }
}
例如,我希望变量“a”保留整数的属性

**setA(13)**
**setA(13.32)**
i、 e a=13,而非a=13.0

我仍然希望变量“a”具有Double的属性,例如

**setA(13)**
**setA(13.32)**

i、 ea=13.32

以下是您需要的小代码。请记住,我强烈建议不要遵循这个原则

public class Example {

    private Number a;

    public Number getA() {
        return a;
    }

    public void setA(Double a) {
        if (a % 1 == 0) {
            this.a = a.intValue();
        } else {
            this.a = a;
        }
    }

    public void setA(int a) {
        this.a = a;
    }

    public static void main(String[] args) {
        double integerNumber = 6;

        Example example = new Example();
        example.setA(integerNumber);
        System.out.println(example.getA());
    }

}

下面是您需要的小代码。请记住,我强烈建议不要遵循这个原则

public class Example {

    private Number a;

    public Number getA() {
        return a;
    }

    public void setA(Double a) {
        if (a % 1 == 0) {
            this.a = a.intValue();
        } else {
            this.a = a;
        }
    }

    public void setA(int a) {
        this.a = a;
    }

    public static void main(String[] args) {
        double integerNumber = 6;

        Example example = new Example();
        example.setA(integerNumber);
        System.out.println(example.getA());
    }

}

除了使用另一个答案中建议的基类数字,还可以使用BigDecimal:一个存储精度/小数位数的类。因此,3.10*2.00=6.2000

   new BigDecimal("3.10").multiply(new BigDecimal("2.00"))
缺点:笨拙冗长


优点:精度(称为刻度)并且没有浮点的近似误差:3.1=3.100=实际上3.099999871…

除了使用另一个答案中建议的基类数字之外,还可以使用BigDecimal:一个存储精度/小数位数的类。因此,3.10*2.00=6.2000

   new BigDecimal("3.10").multiply(new BigDecimal("2.00"))
缺点:笨拙冗长


优点:精度(称为刻度)并且没有浮点的近似误差:3.1=3.100=3.099999871…

这称为“方法重载”。几天前我已经回答了这个问题。请看这里:谢谢@M.Dan,我已经查看了链接。但是,提供的答案不适合我的场景,因为我不能用不同的类型声明变量“a”;正如在private Double a和private Integer atake中一样,@mikaeloviThis下面的代码被称为“方法重载”。几天前我已经回答了这个问题。请看这里:谢谢@M.Dan,我已经查看了链接。但是,提供的答案不适合我的场景,因为我不能用不同的类型声明变量“a”;正如在private Double a和private Integer中一样,请查看@mikaelovithanks下面的代码以获取您的响应,但它仍然输出5.0。如果应用了5.3,请看一看@Mikaelovithank感谢您的回复,但它仍然输出5.0。如果应用了5.3,请看一看@谢谢你的方法,但我会接受你的答案。非常感谢你的方法,但我会接受你的答案。