#include<bits/stdc++.h> using namespace std; int cmp(char temp) { switch( temp) { case '+': return 1; case '-': return 1; case '*': return 2; case '/': return 2; default: return 0; } } void fun(string &a, string &b) // 中缀式转变后缀式 { stack<char>s; s.push('#'); int i = 0; while(i<a.length()-1) { if(a[i]=='(') { s.push(a[i]); i++; } else if(a[i]==')') { while(s.top()!='(') { b=b+s.top(); b=b+' '; s.pop(); } s.pop(); i++; } else if( a[i]=='+'||a[i]=='-'||a[i]=='/'||a[i]=='*') { while(cmp(s.top())>=cmp(a[i])) { b+=s.top(); b+=' '; s.pop(); } s.push(a[i]); i++; } else { while(a[i]>='0'&&a[i]<='9'||a[i]=='.') { b+=a[i]; i++; } b+=' '; } } while(s.top()!='#') { b+=s.top(); b+=' '; s.pop(); } b+='='; } double jisuan(double x,double y,char z) { if(z=='+') return x+y; if(z=='-') return y-x; if(z=='*') return x*y; if(z=='/') return y/x; } int main() { int T; string a,b; cin>>T; while(T--) { cin>>a; b=""; fun(a,b); stack<double>s2; int len=b.length(); for(int i=0; i<len; i++) { if(b[i]=='+'||b[i]=='-'||b[i]=='*'||b[i]=='/') { double x=s2.top(); s2.pop(); double y=s2.top(); s2.pop(); s2.push(jisuan(x,y,b[i])); } if(b[i]>='0'&&b[i]<='9') { char c[1005]; int cot=0; while(b[i]!=' ') { c[cot++]=b[i]; i++; } c[cot]='\0'; double temp=atof(c); s2.push(temp); } } printf("%.2lf\n",s2.top()); while(!s2.empty()) s2.pop(); } return 0; }