javascript - Android rhino计算奇怪的行为

标签 javascript java android rhino

我正在使用此项目 ( https://github.com/APISENSE/rhino-android ) 在我的 Android 应用程序中进行计算。

但是,表达式中某些以 0 开头的数字会导致计算出现奇怪的行为。例如:

  • eval(016+2) 返回 16。
  • eval(016) 返回 14。
  • eval(031) 返回 25。
  • eval(031x2) 返回 50。

其他看起来不错的例子:

  • eval(018+2) 返回 20。
  • eval(019+5) 返回 24。

代码示例:

String expression = "016+2";
ScriptEngine engine = new ScriptEngineManager().getEngineByName("rhino");
double result = (double) engine.eval(expression);

有什么想法吗?

最佳答案

在 JavaScript 中,在整数前面放置 0 会将其转换为八进制,0x 将其转换为十六进制,0b 将其转换为二进制。

如果整数中有 8 或 9,则不会发生此行为,因为在这种情况下不可能转换为八进制。

所以这里的行为对于 JavaScript 来说似乎完全正常。所以我需要处理我的表情以避免这种情况。

关于javascript - Android rhino计算奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56408684/

相关文章:

java - 使用 Eclipse 编译旧的 Java 源代码

Android - 如何从微调器中获取选定的项目值并将其放入字符串中?

android - 我是否正确地在 Activity 代码中进行依赖注入(inject)?

php - 在 drupal_goto 之前使用 drupal_add_js

javascript - Backbone 模型属性在被调用时引发 TypeError

javascript - 如何在 moment.js 中比较两个日期

java - 我可以通过这种方式传递列名吗?

javascript - Jquery 阻止设备键盘重新调整浏览器内容的大小

java - Android Google Play API - 该卖家目前无法接受付款

java - 从 PhoneGap 访问 Urban Airship Constant