#include<iostream>
#include<string>
#include<stack>
using namespace std;
stack<char> op; //运算符
stack<double> d; //操作数
double getnum(string str,
int& t) { //将多个字符转化为数字,t为引用类型
double ans = 0;
while (isdigit(str[t])) {
ans = ans * 10 + str[t] - '0';
t++;
}
return ans;
}
int priority(char c) {
if (c == '#') return 0;
else if (c == '$') return 1;
else if (c == '+' || c == '-') return 2;
else return 3;
}
double calculate(double x, double y, char op) {
double res = 0;
if (op == '+') res = x + y;
else if (op == '-') res = x - y;
else if (op == '*') res = x * y;
else if (op == '/') res = x / y;
return res;
}
int main() {
string str;
while (getline(cin, str)) {
if (str == "0") break;
op.push('#'); //#为最低优先级
str += '$'; //处理结束的标志
int t = 0;
while (t < str.size()) {
if (str[t] == ' ') t++; //跳过空格
else if (isdigit(str[t])) d.push(getnum(str,
t)); //数字入栈,可能有多位
else {
if (priority(op.top()) < priority(
str[t])) { //优先级比运算符栈顶大,则入栈
op.push(str[t]);
t++;
} else {
double y = d.top(); //取操作数
d.pop();
double x = d.top();
d.pop();
d.push(calculate(x, y, op.top())); //后进先出
op.pop(); //弹出运算符
}
}
}
printf("%.2f\n", d.top());
}
return 0;
}