前缀符号字符串计算器Javascript问题
我正在为前缀符号字符串制作一个计算器,它涵盖了我添加到其中的所有常规测试。但我遇到了一个问题,它似乎没有得到正确的答案,我不确定为什么它似乎有这个问题 我认为这可能与数字的除法和减法有关,因为问题的另一个方面是我需要假设所有输入都是有效的,这样就不会有负数,也不会有格式不正确的输入 这是我输入的代码和一些测试问题前缀符号字符串计算器Javascript问题,javascript,algorithm,prefix-operator,Javascript,Algorithm,Prefix Operator,我正在为前缀符号字符串制作一个计算器,它涵盖了我添加到其中的所有常规测试。但我遇到了一个问题,它似乎没有得到正确的答案,我不确定为什么它似乎有这个问题 我认为这可能与数字的除法和减法有关,因为问题的另一个方面是我需要假设所有输入都是有效的,这样就不会有负数,也不会有格式不正确的输入 这是我输入的代码和一些测试问题 "+ / * 1 3 + 12 16 * 10 4" = 40.107142857142854 "+ * / - 5 3 / 1 3 + 2 2 / 3
"+ / * 1 3 + 12 16 * 10 4" = 40.107142857142854
"+ * / - 5 3 / 1 3 + 2 2 / 3 * + 12 16 * 10 4" = 24.00267857142857 --- This is the one it doesn't like
"/ 300000 * + 12 16 * 10 40"= 26.785714285714285
函数前缀(表达式){
let temp=表达式拆分(“”)
设expr=temp.reverse()
让堆栈=[]
for(设i=0;i
您正在使用parseInt
并将2
除以0
,从而产生无穷大。要解决
变,
let temp = checkOperator(parseInt(j), parseInt(k), expr[i])
到
这将为您提供预期的答案您正在使用parseInt
并将2
除以0
,从而产生无穷大
。要解决
变,
let temp = checkOperator(parseInt(j), parseInt(k), expr[i])
到
这是给你期望的答案
let temp = checkOperator(parseFloat(j), parseFloat(k), expr[i])