#include <stdio.h>
#include <string.h>
#define M 1000
typedef struct data
{
double digital[M];
int top;
}Data;
typedef struct Str
{
char string[M];
int top;
}Str;
void pop_data(Data *p, char s);
void pop_str(Str *p);
int main()
{
int n = 0, i = 0, lens = 0, j;
double d = 0;
char s[M], a[M];
Data data;
Str str;
scanf("%d", &n);
getchar();
while(n--)
{
str.top = 0;
data.top = 0;
memset(str.string, '\0', M);
memset(data.digital, -1, M);
str.string[0] = '=';
str.top++;
memset(s, '\0', M);
memset(a, '\0', M);
gets(s);
lens = strlen(s);
j = 0;
for(i = 0; i < lens; i++)
{
if((s[i] >= '0' && s[i] <= '9') || s[i] == '.' )
a[j++] = s[i];
else if(s[i] == '*' || s[i] == '/')
{
if(a[0] != '\0')
{
sscanf(a, "%lf", &d);
data.digital[data.top++] = d;
memset(a, '\0', M);
j = 0;
}
if(str.string[str.top - 1] == '*' || str.string[str.top - 1] == '/')
{
pop_data(&data, str.string[str.top - 1]);
pop_str(&str);
}
str.string[str.top++] = s[i];
}
else if(s[i] == '(')
str.string[str.top++] = s[i];
else if(s[i] == '+' || s[i] == '-' || s[i] == '=')
{
if(a[0] != '\0')
{
sscanf(a, "%lf", &d);
data.digital[data.top++] = d;
memset(a, '\0', M);
j = 0;
}
if(str.string[str.top - 1] == '*' || str.string[str.top - 1] == '/' || s[i] == '=')
{
pop_data(&data, str.string[str.top - 1]);
pop_str(&str);
}
else if(str.string[str.top - 1] == '+' || str.string[str.top - 1] == '-')
{
pop_data(&data, str.string[str.top - 1]);
pop_str(&str);
}
if(s[i] == '=' && str.string[str.top - 1] != '=')
{
pop_data(&data, str.string[str.top - 1]);
pop_str(&str);
}
if(str.string[str.top - 1] == '+' || str.string[str.top - 1] == '-')
{
pop_data(&data, str.string[str.top - 1]);
pop_str(&str);
}
str.string[str.top++] = s[i];
}
else if(s[i] == ')')
{
if(a[0] != '\0')
{
sscanf(a, "%lf", &d);
data.digital[data.top++] = d;
memset(a, '\0', M);
j = 0;
}
pop_data(&data, str.string[str.top - 1]);
str.string[str.top - 1] = '\0';
if(str.string[str.top - 2] != '(')
{
pop_data(&data, str.string[str.top - 2]);
pop_str(&str);
}
str.string[str.top - 1] = '\0';
str.string[str.top - 2] = '\0';
str.top -= 2;
}
}
printf("%.2f\n", data.digital[0]);
}
return 0;
}
void pop_data(Data *p, char s)
{
switch(s)
{
case '+': p->digital[p->top - 2] = p->digital[p->top - 2] + p->digital[p->top - 1]; break;
case '-': p->digital[p->top - 2] = p->digital[p->top - 2] - p->digital[p->top - 1]; break;
case '*': p->digital[p->top - 2] = p->digital[p->top - 2] * p->digital[p->top - 1]; break;
default : p->digital[p->top - 2] = p->digital[p->top - 2] / p->digital[p->top - 1];
}
p->digital[p->top - 1] = -1;
p->top--;
}
void pop_str(Str *p)
{
p->string[p->top - 1] = '\0';
p->top--;
}