Rhino JS / ScriptEngine来自Java -整数输入,双输出
Rhino JS / ScriptEngine from Java - integers in, doubles out?
我正在尝试用Rhino在Java中嵌入Javascript。我注意到,当我在Javascript中eval一个将两个int型加在一起的脚本时,结果返回为Double。
ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
engine.put("x", 3);
engine.put("y", 4);
assertEquals(3, engine.eval("x")); // OK
assertEquals(4, engine.eval("y")); // OK
assertEquals(7, engine.eval("x + y")); // FAILS, actual = (Double) 7.0
那么为什么x + y
表达式返回double而不是int呢?
是Javascript本身做一些类型提升我不明白吗?
今日趣事:javascript (ECMAScript)中的所有数字都是双精度的
Number类型恰好有18437736874454810627(即264−253+3)值,表示双精度64位格式IEEE 754在IEEE二进制浮点标准中指定的值算术,除了9007199254740990(即253−2)不同IEEE标准的"非数字"值表示为ECMAScript作为一个特殊的NaN值
http://people.mozilla.org/~ jorendorff/es6-draft.html # sec-8.1.5
JavaScript只有一种数字类型- Number,它类似于Java的Double类型。我期望引擎将类型强制为Number
以执行算术。
相关文章:
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 带静态字符e输入的文本框数字和带javascript的负整数
- AngularJS输入接受整数和特殊字符
- 只允许在输入字段中使用整数
- 如何要求用户输入一个介于 1 和 50 之间的整数,然后小程序打印出一行这个星数
- 整数 + 2x 单选按钮设置输入 --> 输出
- 文本输入如何只接受正整数
- 检查用户输入是否为整数(Javascript)
- node.js - 发送一个整数作为 POST 请求中的输入参数
- 使用 Javascript 从用户输入中提醒最高和最低整数
- 我无法输入整数
- 验证输入的数字是整数还是“一半”
- jquery表单验证需要一组输入中的一个,并要求输入是整数
- 如何检查用户输入是否为整数
- 文本输入只允许angularjs中的整数输入
- 在动态创建的文本框中动态添加整数作为用户输入-Angular JS
- 即使输入是整数,JavaScript也返回NaN
- 检查输入的值是否为有效整数
- 我想通过文本输入从用户那里得到两个整数,找出这两个数字之间的差,然后将这个数字除以25.我该怎么做呢?
- 如何在一个大的输入整数中计算重复数字