Asked by a StackOverflow user; I've produced a clearer reproduction case below.
Original question is http://stackoverflow.com/questions/25989642/why-does-java-8-nashorn-javascript-modulo-returns-0-0-double-instead-of-0-i/25991982 It confused the asker and I confess it makes no sense to me: public class Tester { public static void main( String[] args ) throws Exception { javax.script.ScriptEngine se = new javax.script.ScriptEngineManager().getEngineByName( "nashorn" ); Object eval = se.eval( "5%5" ); Object eval2 = se.eval( "5%2" ); System.out.println( "eval = " + eval ); System.out.println( "eval2 = " + eval2 ); System.out.println( "eval.getClass() = " + eval.getClass() ); System.out.println( "eval2.getClass() = " + eval2.getClass() ); } } Result: $ java -version && javac Tester.java && java Tester java version "1.8.0_20" Java(TM) SE Runtime Environment (build 1.8.0_20-b26) Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode) eval = 0.0 eval2 = 1 eval.getClass() = class java.lang.Double eval2.getClass() = class java.lang.Integer
