-
Bug
-
Resolution: Not an Issue
-
P4
-
None
-
8
-
generic
-
generic
A DESCRIPTION OF THE PROBLEM :
When ScripEngine is used for multiplying decimal numbers the answer is incorrect.
E.g. when engine eval method with formula multiplies 7.0*0.01*20 it gives 1.4000000000001. The correct answer is 1.4000000000.
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class Test {
public static void main(String[] args) throws Exception {
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
System.out.println(engine.eval("7.0*0.01*20"));
}
}
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
When ScripEngine is used for multiplying decimal numbers the answer is incorrect.
E.g. when engine eval method with formula multiplies 7.0*0.01*20 it gives 1.4000000000001. The correct answer is 1.4000000000.
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class Test {
public static void main(String[] args) throws Exception {
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
System.out.println(engine.eval("7.0*0.01*20"));
}
}
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
7.0*0.01*20 it gives 1.4000000000001
ACTUAL -
7.0*0.01*20 it gives 1.4000000000000
---------- BEGIN SOURCE ----------
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class Test {
public static void main(String[] args) throws Exception {
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
System.out.println(engine.eval("7.0*0.01*20"));
}
}
---------- END SOURCE ----------
FREQUENCY : always
When ScripEngine is used for multiplying decimal numbers the answer is incorrect.
E.g. when engine eval method with formula multiplies 7.0*0.01*20 it gives 1.4000000000001. The correct answer is 1.4000000000.
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class Test {
public static void main(String[] args) throws Exception {
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
System.out.println(engine.eval("7.0*0.01*20"));
}
}
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
When ScripEngine is used for multiplying decimal numbers the answer is incorrect.
E.g. when engine eval method with formula multiplies 7.0*0.01*20 it gives 1.4000000000001. The correct answer is 1.4000000000.
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class Test {
public static void main(String[] args) throws Exception {
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
System.out.println(engine.eval("7.0*0.01*20"));
}
}
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
7.0*0.01*20 it gives 1.4000000000001
ACTUAL -
7.0*0.01*20 it gives 1.4000000000000
---------- BEGIN SOURCE ----------
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class Test {
public static void main(String[] args) throws Exception {
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
System.out.println(engine.eval("7.0*0.01*20"));
}
}
---------- END SOURCE ----------
FREQUENCY : always
- relates to
-
JDK-8279199 Modulo operations with floating point numbers are not always correct
- Closed