使类型Double对整数和双倍类型的分配做出响应

时间:2018-12-08 10:42:43

标签: java

我有此代码:

public class doubles() {
    private Double a;

    public Double getA(){
        return this.a 
    }
    public void setA(Double a){
      this.a = a
    }
}

例如,我希望变量'a'保留整数的属性

**setA(13)**

即a = 13而不是a = 13.0

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

**setA(13.32)**

即a = 13.32

2 个答案:

答案 0 :(得分:2)

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

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());
    }

}

答案 1 :(得分:2)

或者使用在另一个答案中提出的基类 Number ,也可以使用 BigDecimal :一种存储精度/小数位的类。因此3.10 * 2.00 = 6.2000。

   new BigDecimal("3.10").multiply(new BigDecimal("2.00"))

缺点:笨拙的冗长。

优点:精度(称为标度)并且不具有浮点近似误差:3.1 = 3.100 =实际上是3.099999871 ...