Ver Mensaje Individual
  #8 (permalink)  
Antiguo 04/11/2019, 08:17
prueba230683
 
Fecha de Ingreso: abril-2011
Mensajes: 170
Antigüedad: 13 años
Puntos: 68
Respuesta: Formula de Excel a JS

@tuadmin, en este caso no es por los paréntesis, ya que sí que le funcionó antes.

El problema es que no está parseando los inputs como números. Para ello, simplemente usa la función parseInt:

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2.     <title></title>
  3. </head>
  4.     <label for="D1">Monthly online conversations with customers</label>
  5.     <input type="number" name="D1" id="D1"></br>
  6.     <label for="D2">Montly cost of online support</label>
  7.     <input type="number" name="D2" id="D2"></br>
  8.     <label for="D3">Monthly phone conversations with customers</label>
  9.     <input type="number" name="D3" id="D3"></br>
  10.     <label for="D4">Montly cost of phone support</label>
  11.     <input type="number" name="D4" id="D4"></br>
  12.     <label for="result">Result</label>
  13.     <input type="text" name="result" id="result">
  14.     <button onclick="calculate();">Calculate</button>
  15. </body>
  16. <script type="text/javascript">
  17.  
  18.     function calculate (){
  19.         var D1 = parseInt(document.getElementById('D1').value);
  20.         var D2 = parseInt(document.getElementById('D2').value);
  21.         var D3 = parseInt(document.getElementById('D3').value);
  22.         var D4 = parseInt(document.getElementById('D4').value);
  23.         var E6 = D1 / D1 * D1 * 0.3 + D1 * 0.7 * 0.15 + (D4/D3) *  D3 * 0.5 + D3 * 0.5 * 0.3;
  24.          
  25.         var result;
  26.          
  27.         if(D2 > 0){
  28.             if(D4>0){
  29.                 result = E6/(D4+D2)
  30.             }else{
  31.                 result = (D1*0.6+D3*0.4)/(D1+D3)
  32.             }
  33.         }else{
  34.             result = (D1*0.6+D3*0.4)/(D1+D3)
  35.         }
  36.          
  37.         result = 1 - result;
  38.          
  39.         var s = Math.round(result * 100);
  40.         document.getElementById('result').value = s+"%";
  41.          
  42.         console.log(s + "%");
  43.     };

Ahora sí arroja el mismo resultado que antes.

Te recuerdo que si quieres usar números decimales en vez de enteros deberás cambiar parseInt por parseFloat.

Un saludo