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,请看一看@谢谢你的方法,但我会接受你的答案。非常感谢你的方法,但我会接受你的答案。