Groovy calcaution与javascript相同?

时间:2014-05-05 07:25:50

标签: java javascript groovy

我的计划中Groovy计算出错了什么?

public class GroovyRunner {
    public static void main(String[] args) throws Exception {
        new GroovyShell().parse(new File("hello.groovy")).invokeMethod("show", null);
    }
}

hello.groovy

def show() {
    float a = 0.1;
    float c = 0.1;
    float d = 0.2;
    if(a + c == d) {
        println "Equal"
    } else {
        println "Not Equal"
    }
}

The result is `Equal`

当我更改cd变量的值时,如下所示。结果是Not Equal

hello.groovy

def show() {
    float a = 0.1;
    float c = 0.2;
    float d = 0.3;
    if(a + c == d) {
        println "Equal"
    } else {
        println "Not Equal"
    }
}

我决定使用Groovy,因为我希望避免Javascript引擎的浮点计算。
Groovy计算为Javascript

1 个答案:

答案 0 :(得分:0)

而不是:

  float a = 0.1;
  float c = 0.2;
  float d = 0.3;

使用:

  def a = 0.1
  def c = 0.2
  def d = 0.3

Groovy将自动处理并提供正确的结果。