Hola, prueba este código, cambié algunas cosas para optimizarlo.
Código HTML:
<script type="text/javascript">
function redondea(sVal, nDec){
var n = parseFloat(sVal);
var s = "0.00";
if (!isNaN(n)){
n = Math.round(n * Math.pow(10, nDec)) / Math.pow(10, nDec);
s = String(n);
s += (s.indexOf(".") == -1? ".": "") + String(Math.pow(10, nDec)).substr(1);
s = s.substr(0, s.indexOf(".") + nDec + 1);
}
return s;
}
function calcula(operacion, nDec){
var t1 = document.form1.t1.value = redondea(document.form1.t1.value,nDec);
var t2 = document.form1.t2.value = redondea(document.form1.t2.value,nDec);
var t3 = document.form1.t3.value = redondea(document.form1.t3.value,nDec);
var t4 = document.form1.t4.value = redondea(document.form1.t4.value,nDec);
var result = eval(t1 + operacion + t2 + operacion + t3 + operacion + t4);
document.form1.resultado.value = redondea(result,nDec);
}
</script>
<form name="form1">
<p>
<input type="text" name="t1" onChange="calcula('+',2)" onfocus="if(this.value == '0.00') {this.value=''}" onblur="if(this.value == ''){this.value ='0.00'}" value="0.00" id="t1" >
<br>
<input type="text" name="t2" onChange="calcula('+',2)" onfocus="if(this.value == '0.00') {this.value=''}" onblur="if(this.value == ''){this.value ='0.00'}" value="0.00" id="t2" >
<br>
<input type="text" name="t3" onChange="calcula('+',2)" onfocus="if(this.value == '0.00') {this.value=''}" onblur="if(this.value == ''){this.value ='0.00'}" value="0.00" id="t3" >
<br />
<input type="text" name="t4" onChange="calcula('+',2)" onfocus="if(this.value == '0.00') {this.value=''}" onblur="if(this.value == ''){this.value ='0.00'}" value="0.00" id="t4" >
</p>
<p><br>
Total:
<input type="Text" name="resultado" size="12" readonly>
</p>
</form>
La función
calcula recibe un atributo de más que va a ser el número de decimales para todos los campos.
Espero te sirva, alguna duda vuelves a comentar.
Saludos.