我正在使用这个项目(https://github.com/APISENSE/rhino-android)在我的Android应用中进行计算。
但是,表达式中某些以0开头的数字会导致计算中出现奇怪的行为。例如:
其他看起来还不错的示例:
代码示例:
String expression = "016+2";
ScriptEngine engine = new ScriptEngineManager().getEngineByName("rhino");
double result = (double) engine.eval(expression);
会发生什么?
答案 0 :(得分:0)
在JavaScript中,在整数前面加上0会将其强制转换为八进制,将0x强制将其强制转换为十六进制,将0b强制转换为二进制。
如果整数中有8或9,则不会发生这种情况,因为在这种情况下,无法强制转换为八进制。
因此,此行为对于JavaScript来说似乎是完全正常的。所以我需要对待我的表情以避免这种情况。