Java ScriptEngine因“长”而失败。加成?

时间:2012-06-29 18:37:44

标签: java scriptengine

我正在使用ScriptEngine来执行String中指定的计算。我尝试了一个简单的程序如下:

 public static void main(String[] args){
    ScriptEngineManager mgr = new ScriptEngineManager();
    ScriptEngine engine = mgr.getEngineByName("JavaScript");
    Float f;
    try {
        f = new Float(engine.eval("1340984972921+7200000").toString());
        System.out.println(f.longValue()+"");
    } catch (Exception e){}
  }

这给出了1340992126976的输出,但正确的答案是1340992172921

这似乎适用于相当大的整数,但是对于长值而言则失败。我想要它们作为长值,因为它们是时间戳,我想这样使用它们。关于什么可以使这项工作的任何想法?

感谢。

1 个答案:

答案 0 :(得分:2)

尝试将数据类型从Float更改为Double。我认为这是一个精确的问题。