Java ScriptEngine 添加 'long' 失败?

标签 java scriptengine

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

 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

这似乎适用于相当大的整数,但不适用于长值。我希望它们是长值,因为它们是时间戳,我想这样使用它们。有什么想法可以让这项工作成功吗?

谢谢。

最佳答案

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

关于Java ScriptEngine 添加 'long' 失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11267222/

相关文章:

java - 一台机器可以使用Java中的socket同时充当客户端和服务器吗?

java - java.util.regex 包支持哪些标准

java - 使用空闲实例和挂起的延迟设置进行 AppEngine 性能调整

java - 无法使用 javascript 从 Java 中解析完整的 javascript if 语句

javascript - 你如何从 Nashorn 获取 JavaScript 堆栈跟踪?

groovy - 从 IDEA 调试在 ScriptEngine 中运行的 Groovy 脚本

java - 在 Java 上验证 AWS id token

java - java中的列表<结构>

java - 在 Java ScriptEngine 中使用 Quercus 时如何注册 Quercus 自定义函数?

java - 如何在 Java 中求解字符串中的基本数学方程?