gpt4 book ai didi

Java 双重数学

转载 作者:行者123 更新时间:2023-12-01 19:42:11 24 4
gpt4 key购买 nike

所以我跟踪这段代码,得到了 2.25 和 2.75 的结果。但是当我编译它时,我得到1.5和2.0。这是为什么?括号跟这个有关系吗?

public class TraceClass {
private double valBefore;
private double valAfter;

public TraceClass(double valIn) {
this.valBefore = valIn;
this.valAfter = 0.0;
}

public void doIt(boolean which){
if (which == true) {
this.valAfter = ((int) this.valBefore) + .5;
}
else {
this.valAfter = (int) (this.valBefore + .5);
}
}

public double getValAfter(){
return this.valAfter;
}
}
public class MainClass {
public static void main(String[] args) {

TraceClass traceObj = new TraceClass(1.75);

traceObj.doIt(true);
double temp = traceObj.getValAfter();
System.out.println("Result is " + temp);

traceObj.doIt(false);
temp = traceObj.getValAfter();
System.out.println("Result is " + temp);
}
}

编辑:这是我的老师给出的堆栈跟踪练习的代码。我得到 2.25,因为我添加了 1.75+.5= 2.25。但后来我不小心将 2.25 加了 0.5 得到了 2.75编辑2:打字错误

最佳答案

括号和转换为 int 都会影响结果,而且顺序很重要。

对于 true 情况,valBefore 首先被转换为 int,产生整数值 1(被截断)。然后添加 .5,一个 double 值,因此 1 被加宽为 1.01.5 结果。

对于 false 情况,valBefore 首先添加到 0.5,1.5 + .5 为 2.0 。然后将该结果转换为 int,生成 2。返回到 double 变量 valAfter 的赋值将其加宽回 double -- 2.0

关于Java 双重数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54991861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com