2012-03-29 20 views
9

¿Cómo puedo redondear un valor de un campo de texto con un resultado parseFloat en él? Esta aplicación básicamente resume el valor de todos los botones de opción cuando se hace clic y muestra la suma en un cuadro de texto.Cómo redondear los resultados de ParseFloat en Jquery/Javascript?

El siguiente código funciona perfectamente si el valor del botón de opción es un número entero; sin embargo, si deseo tener un valor de coma flotante en el botón de opción, el valor total tendrá 100.0000000679 cuando sea 100. Cualquier consejo sería muy apreciado. Gracias por adelantado.

function calcscore(){ 
    var score = 0; 
    $(".calc:checked").each(function(){ 
    score+=parseFloat($(this).val(),10); 
    }); 
    $("input[name=openingsum]").val(score); 
} 
$().ready(function(){ 
    $(".calc").change(function(){ 
     calcscore(); 
    }); 
}); 

HTML Code:

<input class="calc" name="v2" type="radio" onclick="ver2(this);" value="1.6666666666666666666666666666667" />Yes 
<input class="calc" name="v2" type="radio" onclick="ver2(this);" value="0" />No 
+1

creo que se encuentra esta aplicables a sus necesidades [http : //stackoverflow.com/questions/4640404/parsefloat-rounding] [1] [1]: http://stackoverflow.com/questions/4640404/parsefloat-rounding – djmadscribbler

Respuesta

11

Al principio, yo creo que nos ha proporcionado un ejemplo diferente de lo esperado. Si nos dice algo sobre conseguir 100.0000000679 y en su código sólo es un valor de 1.6666666666666666666666666666667 hay algo mal :)

así que espero que su problema es sólo para redondear la forma correcta. Para que pueda utilizar .toFixed()

Ver el example on jsfiddle

HTML:

<input class="calc" name="v1" type="radio" onclick="ver2(this);" value="1.6666666666666666666666666666667" />Yes 
<input class="calc" name="v1" type="radio" onclick="ver2(this);" value="0" />No 
<br> 
<input class="calc" name="v2" type="radio" onclick="ver2(this);" value="1.6666666666666666666666666666667" />Yes 
<input class="calc" name="v2" type="radio" onclick="ver2(this);" value="0" />No 
<br> 
<input class="calc" name="v3" type="radio" onclick="ver2(this);" value="1.6666666666666666666666666666667" />Yes 
<input class="calc" name="v3" type="radio" onclick="ver2(this);" value="0" />No 
<br> 
<input type="text" name="openingsum">​ 

javascript:

function calcscore(){ 
    var score = 0; 
    $(".calc:checked").each(function(){ 
    score+=parseFloat($(this).val(),10); 
    }); 
    score = score.toFixed(2); 
    $("input[name=openingsum]").val(score); 
} 
$().ready(function(){ 
    $(".calc").change(function(){ 
     calcscore(); 
    }); 
});​ 
+0

Neysor: Gracias una vez más para hacer una contribución más significativa a mi trabajo. Como siempre, has sido muy rápido y has contribuido mucho a mi trabajo. Tus aportaciones siempre han sido un momento muy asombroso cada vez que lo implemento en mi trabajo. Su solución vale mucho la pena recomendar a otros novatos como yo. Gracias. –

+0

@ Davinchie_214 no hay problema! Estoy aquí registrado para ayudar a la gente. Pero como vi ahora, djmadscribbler te proporcionó la pista correcta. Quizás la próxima vez tengas un mejor aspecto de eso. Si lo hubiera hecho, entonces quizás intente escribir lo que sucedió mal al hacerlo :) – Neysor

+0

Por cierto, Neysor, los valores que utilicé anteriormente son solo para fines de simulación. Tengo la intención de usarlo de esa manera para que pueda explicar mejor lo que quiero que pase a la pregunta anterior. Una cosa más, sin embargo, el puntaje total solo muestra 99 cuando debería 100 cuando cambié el parseFloat a parseInt. ¿Podría ser un pequeño error o podría haber hecho algo mal otra vez? Pero no se confunda, el mío está funcionando ahora, excepto que cuando lo cambio a parseInt, el programa sale mal. Gracias por el aporte. –

Cuestiones relacionadas