在 groovy 中加倍
Adding double in groovy
我定义了两个双打:
double abc1 = 0.0001;
double abc2 = 0.0001;
现在如果我打印它们:
println "Abc1 "+abc1;
println "Abc2 "+abc2;
它returns:
Abc1 1.0E-4
Abc2 1.0E-4
而如果我添加它们:
println "Abc3 "+abc1+abc2;
它returns:
Abc3 1.0E-41.0E-4
而不是:
Abc3 2.0E-4
为什么会这样?
这是因为加法运算符从 从左到右 并且您从字符串开始,因此加法运算符作为 concatenation operator in your case.
这个:
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);
这里你优先添加在连接之前。
你的方法不起作用的原因是加法运算是从左到右进行的。您可以改为这样做:
println "answer "+(double)(abc1+abc2);
我定义了两个双打:
double abc1 = 0.0001;
double abc2 = 0.0001;
现在如果我打印它们:
println "Abc1 "+abc1;
println "Abc2 "+abc2;
它returns:
Abc1 1.0E-4
Abc2 1.0E-4
而如果我添加它们:
println "Abc3 "+abc1+abc2;
它returns:
Abc3 1.0E-41.0E-4
而不是:
Abc3 2.0E-4
为什么会这样?
这是因为加法运算符从 从左到右 并且您从字符串开始,因此加法运算符作为 concatenation operator in your case.
这个:
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);
这里你优先添加在连接之前。
你的方法不起作用的原因是加法运算是从左到右进行的。您可以改为这样做:
println "answer "+(double)(abc1+abc2);