【发布时间】:2022-01-20 05:51:24
【问题描述】:
我有一个 Web 应用程序,搜索由 ElasticSearch 提供支持。
我在 Java 中使用 ScriptEngine 计算小数值:
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
System.out.println("12*0.0254 = " + engine.eval("12*0.0254"));//0.30479999999999996
System.out.println("12000*0.0000254 = " + engine.eval("12000*0.0000254"));//0.3048
从 cmets 的 SOP 输出中可以看出,对于相同的输入,输出的四舍五入方式不同。
在 UI 中,我使用 JavaScript 的内置 eval() 函数,这与不一致的 Java 输出不匹配。
Java 中获得一致且正确的表达式结果的方法是什么,即12 * 0.0254 应始终评估为0.3048 而不是0.30479999999999996?
【问题讨论】:
标签: javascript java fractions