我正在使用文档的股票因子运算符,如下所示:
factorial = new Operator("!", 1, true, Operator.PRECEDENCE_POWER + 1) {
@Override public double apply(double... args) {
final long arg = (long) args[0];
if ((double) arg != args[0]) {
throw new IllegalArgumentException("Operand for factorial has to be an " + "integer");
}
if (arg < 0) {
throw new IllegalArgumentException("The operand of the factorial can not " +
"be " +
"less than zero");
}
double result = 1;
for (int i = 1; i <= arg; i++) {
result *= i;
}
return result;
}
};
它适用于正则表达式,但是当我有一个表达式时
5^(2)!
当预期答案为25
时,它会返回1.55e25
。它需要2
作为其参数,而不是权力的最终答案。
我试着搞乱优先权,但似乎没有任何区别。
有什么想法吗?
答案 0 :(得分:1)
对我来说似乎正确。 5 ^ 2!应该是25,应该是5 ^(2)!
Google确认了这两项。
也许您是说(5 ^ 2)!代替?那应该解决它。
我不知道将括号放在单个数字周围会改变操作顺序的任何情况。