【问题标题】:Android rhino calculation strange behaviorAndroid rhino 计算奇怪行为
【发布时间】:2019-10-17 21:44:56
【问题描述】:

我正在使用这个项目 (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 java android rhino


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-31
      • 1970-01-01
      相关资源
      最近更新 更多