javascript - 四舍五入后无法从 Nashorn 引擎接收非小数位数字

标签 javascript java nashorn

我遇到与 Nashorn 引擎的 Numbers 相关的问题

核心问题是使用 Math.round() 四舍五入后无法从 Nashorn 引擎接收非小数位数。

但它返回带有小数位的值,尽管在 js 中它提供了没有小数位的值,并且当我只返回编码原语时,它工作得很好。

我如何需要将浮点值转换为最接近的整数并通过 Nashorn 接收它。我知道我可以简单地执行 return (num+""); 。但我喜欢做得更好并学习一些新东西。 注意:我想用 js 函数来做到这一点。

script.js

var nonMath = function(){
    var num = 2; 
    print("num : " + num); //prints 2
    return (num);
};

var doMath = function(){
    var num = Math.round(2.0); 
    print("num : " + num); //prints 2
    return (num);
};

TestClass.java

ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
engine.eval(new FileReader("lib/script.js"));

Invocable invocable = (Invocable) engine;
System.out.println("nonMath : " + invocable.invokeFunction("nonMath")); //prints 2
System.out.println("doMath : " + invocable.invokeFunction("doMath")); //prints 2.0

最佳答案

您可以使用~~ chop Math.round 的结果,例如

var doMath = function(){
    var num = ~~Math.round(2.0);
    return num;
}

我用你的代码运行得到的

doMath : 2

关于javascript - 四舍五入后无法从 Nashorn 引擎接收非小数位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42451950/

相关文章:

javascript - 将 ng-repeat 与数组中的键一起使用

java - 轻松向鼠标旋转

java - java中扩展和实现线程概念的区别

java - Long 或 String 挪威出生号码

nashorn - GraalVM + Nashorn 无法扩展类

java - 方法返回字符串与字符串变量之间的区别

javascript - 在java中重用javascript

javascript - 单击触发按钮在“阅读更多”和“阅读更少”按钮中不起作用

javascript - 特定对象实例的自定义函数 - 我有什么可能性?

javascript - 无法使用 jquery 选择无序列表的子项?