import java.util.HashMap;
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
HashMap<Character,Integer> map=new HashMap<Character,Integer>();//存运算符的优先级
Stack<Double> sk1=new Stack<Double>();//存数字
Stack<Character> sk2=new Stack<Character>();//存运算符
map=SUM(map);
int N=input.nextInt();
while(N-->0){
String s=input.next();
boolean ok=true;
int x=0;
for(int i=0;i<s.length();i++){
char a=s.charAt(i);
if((a>='0'&&a<='9'||a=='.')&&ok){
x=i;
ok=false;
}
else if(!(a>='0'&&a<='9'||a=='.')){//是运算符
//System.out.println(s.substring(x, i));
if(i>0&&s.charAt(i-1)<='9'&&s.charAt(i-1)>='0')//防止两个运算符一块,1*(..)
sk1.push(Double.parseDouble(s.substring(x, i)));//将数字部分变成浮点型
ok=true;
if(sk2.isEmpty()){//运算符栈是空,运算符直接进栈
sk2.push(a);
}
else{//运算符栈不为空
if(map.get(sk2.peek())<map.get(a)){//如果来的运算符优先级较高,直接进栈
sk2.push(a);
continue;
}
while(!sk2.isEmpty()&&(map.get(sk2.peek())>=map.get(a)&&sk2.peek()!='(')){//运算符栈不为空,且来的运算符级别较低,
switch(sk2.pop()){//最后进的运算符出栈,执行运算
case '+':{
Double c=sk1.pop();//数字栈后进的两个数字出栈开始运算,然后再进栈
Double d=sk1.pop();
c=c+d;sk1.push(c);break;
}
case '-':{
Double c=sk1.pop();
Double d=sk1.pop();
c=d-c;sk1.push(c);break;
}
case '*':{
Double c=sk1.pop();
Double d=sk1.pop();
c=c*d;sk1.push(c);break;
}
case '/':{
Double c=sk1.pop();
Double d=sk1.pop();
c=d/c;sk1.push(c);break;
}
}
}
if(!sk2.isEmpty()&&sk2.peek()=='('&&a==')'){//消除运算之后的无意义括号
sk2.pop();
}
else
sk2.push(a);//其他来的运算符继续进栈
}
}
}
System.out.printf("%.2f\n",sk1.pop());
}
}
private static HashMap<Character, Integer> SUM(HashMap<Character, Integer> map) {//运算符优先级
map.put('=', 1);
map.put(')', 2);
map.put('+', 3);
map.put('-', 3);
map.put('*', 4);
map.put('/', 4);
map.put('(', 5);
return map;
}
}