我正在嘗試Rhino在Java中嵌入Javascript。我注意到,當我評估一個在JavaScript中添加兩個ints的腳本時,結果會以Double的形式返回。從Java的Rhino JS/ScriptEngine - 整數,雙打?
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本身做某種類型的促銷我不明白?
確定 - 但後來爲什麼有些數字回來作爲整數和他人雙打? – wrschneider 2013-03-20 16:36:29
如果我不得不猜測它與浮點近似有關。當Rhino得到一個很好的整數時,它給出了一個明確的值「4.0000000000000」,但是,「4.0000000000000 + 3.0000000000000」可能變成了「7.0000000000001」。 JavaScript很好只是給你7,但Java知道更好,在翻譯的某個地方你會得到7.0 – travis 2013-03-20 17:12:21