在用php把计算器的界面做出来后,不知道怎样实现计算
可以先将中缀表达式转换为后缀表达式,再进行计算。
。。。。无非就是传值计算而已,有什么难
这个问题如果处理的好的话,你需要了解很多知识, 其中会涉及到AST(抽象语法树)和词法分析; 但是如果简单来说也不难实现; 我用python写了一个例子, 供你参考:
#仅支持加减乘除, 不考虑其他预算符; 有括号的情况也很容易推广出来;
def evaluation(expression):
if '-' in expression:
left,_,right = expression.partition('-') #partition把"1-2"变为数组['1','-','2']
return evaluation(left) - evaluation(right)
if '+' in expression:
left, _, right = expression.partition('+')
return evaluation(left) + evaluation(right)
if '*' in expression:
left, _, right = expression.partition('*')
return evaluation(left) * evaluation(right)
if '/' in expression:
left, _, right = expression.partition('/')
return evaluation(left) / evaluation(right)
if '.' in expression:
return float(expression)
return int(expression)
if __name__ == '__main__':
print evaluation("3/2.0+10")
λ ~/ python x.py
11.5
你只要注意,必须优先抽取低优先级运算符
;