我定义了两个双打:
double abc1 = 0.0001;
double abc2 = 0.0001;
现在如果我打印它们:
println "Abc1 "+abc1;
println "Abc2 "+abc2;
它返回:
Abc1 1.0E-4
Abc2 1.0E-4
如果我添加它们:
println "Abc3 "+abc1+abc2;
它返回:
Abc3 1.0E-41.0E-4
而不是:
Abc3 2.0E-4
为什么会这样?
答案 0 :(得分:8)
这是因为加法运算符从 从左到右 工作,并且您从字符串开始,因此加法运算符在您的连接运算符中起作用情况下。
这:
println "Abc3 "+abc1+abc2;
会像这样一步一步地完成:
println "Abc3 "+abc1+abc2;
println "Abc3 1.0E-4"+abc2;
println "Abc3 1.0E-41.0E-4";
如果你想得到你期望的结果,那就这样做:
println "Abc3 " + (abc1 + abc2);
在 concatination 之前,您优先 添加。
答案 1 :(得分:1)
你的方法不起作用的原因是加法操作从左到右。你可以这样做:
println "answer "+(double)(abc1+abc2);