#include<stack>
#include<string>
#include<cstdio>
#include<map>
using namespace std;
int main(){
	char buf[300]={'\0'};
	map<char,int> priority;//优先级用map进行管理
	priority.insert(pair<char,int>('$',0));
	priority.insert(pair<char,int>('+',1));
	priority.insert(pair<char,int>('-',1));
	priority.insert(pair<char,int>('*',2));
	priority.insert(pair<char,int>('/',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] == ' '){//number有内容才生成数字
				if(num != ""){
					numstack.push(stod(num));//string to double
					num ="";
				}
			}
			else{
				//得到的字符是+ - * / $
				if(expr[i] == '$'){//把最后的数字字符变成数字
					if(num != ""){
						numstack.push(stod(num));
						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());
	}
}