//土尔逊Torson 编写于2023/5/01
#include <stack>
#include <string>
#include <cstdio>
#include <map>

using namespace std;

int main() {
	char buf[300];
	map<char, int> priority = {
		{'$',0},
		{'+',1},{'-',1},
		{'*',2},{'/',2}
	};
	while (fgets(buf, 300, stdin) != NULL) {
		string expr = buf;
		expr.pop_back();

		if (expr == "0") {
			break;
		}
		expr.push_back('$');//补充一个虚拟的终止符
		string num; //用来搜集单独的0-9以组成一个数字 1 2 3 4 --> 1234
		stack<double> numstack;
		stack<char> operstack;
		for (unsigned i = 0; i < expr.size(); ++i) {
			if (expr[i] >= '0' && expr[i] <= '9') {
				num.push_back(expr[i]);
			}
			else if (expr[i] == ' ') {
				if (num != "") {
					numstack.push(stod(num));//stod --> string to double
					num = "";
				}
			}
			else {
				// + - * / $
				if (expr[i] == '$') {
					if (num != "") {
						numstack.push(stod(num));//stod --> string to double
						num = "";
					}
				}

				while (!operstack.empty() && priority[operstack.top()] >= priority[expr[i]]) {
					// 新来的运算符的优先级不高于栈顶的优先级
					char oper = operstack.top();
					operstack.pop();
					double rhs = numstack.top();
					numstack.pop();
					double lhs = numstack.top();
					numstack.pop();

					switch (oper) {
					case '+':
						numstack.push(lhs + rhs);
						break;
					case '-':
						numstack.push(lhs - rhs);
						break;
					case '*':
						numstack.push(lhs * rhs);
						break;
					case '/':
						numstack.push(lhs / rhs);
						break;
					}
				}
				// 所有比expr[i]优先级更高的运算符都计算过了
				operstack.push(expr[i]);
			}
		}
		printf("%.2lf\n",numstack.top());
	}
}
// 64 位输出请用 printf("%lld")