2012-03-18 2 views
0

J'ai ce code -arrondir les nombres décimaux de résultats dans jquery

$(document).ready(function() { 
    $(function(){ 
$("#result").submit(function(e) { 
    e.preventDefault(); 
    var ele = $("#element").val(), 
    target = $("#target").val(), 
    context = $("#context").val(), 
    border = $("#border").val(), 
    margin = $("#margin").val(), 
    padding = $("#padding").val(); 

console.log(ele, target, context, border, margin, padding); 

var DoubleMargin = parseInt(margin, 10) * 2; 
var DoublePadding = parseInt(padding, 10) * 2; 
var DoubleBorder = parseInt(border, 10) * 2; 


var ActualTarget = parseInt(target, 10) - parseInt(DoubleBorder, 10) - parseInt(DoubleMargin, 10) - parseInt(DoublePadding, 10) * 1; 
var result3 = parseInt(target, 10) - parseInt(DoubleMargin, 10) * 1; 
var MarginResult = parseInt(margin, 10)/parseInt(target, 10) * 100; 
var PaddingResult = parseInt(padding, 10)/parseInt(target, 10) * 100; 
var OriginalResult = parseInt(ActualTarget, 10)/parseInt(context, 10) * 100; 
var BorderResult = parseInt(target, 10) - parseInt(border, 10) * 1; 

//$(".result").append(ele + " " + result + "%"); 
$("<p></p>", { 
    html: ele + " {<br><span>width: " + OriginalResult + "%;" + " /* " + ActualTarget + " (originally " + target + ")/" + context + " */ " + "<br>border: " + border + "px; " + "<br>margin: " + MarginResult + "%; " + "<br>padding: " + PaddingResult+ "%;" + "<br> </span>}" 
}).hide().appendTo("#code-results").fadeIn(); 
    }); 

}); 

}); 

et je veux les résultats pour arrondir le point décimal à seulement 5 places. Je pense que je devrais utiliser

var num.toFixed(5) 

mais je ne peux pas le faire fonctionner

des idées?

edit: merci pour les commentaires - essentiellement les résultats pour OriginalResult, MarginResult et Padding Result pourraient avoir un résultat de 1.0204081632653061%; que je veux avoir seulement les premiers 5/6 points fractionnaires donc c'est 1.020408% par exemple. Y a-t-il un «tout attraper» qui peut être appliqué?

Je l'ai mis sur jsFiddle - http://jsfiddle.net/sturobson/xTEKm/37/ :)

+1

Êtes-vous sûr que le numéro est un numéro, et pas une chaîne au point que vous appelez 'toFixed()'? Et où 'num' est-il défini? –

+0

Je n'ai aucune idée: S fondamentalement le pourcentage de résultats que je reçois de cela pourrait être 1.0204081632653061% par exemple et j'ai besoin du point fractionnaire pour aller 5/6 places comme 1.020408%. Mais en espérant une prise tout pour les maths qui sont en place. :) –

+0

Vous montrez tout ce code, et pourtant vous ne montrez pas 'num.toFixed (5)' n'importe où, et il n'est pas évident pour nous où vous essayez de l'utiliser. Comment sommes-nous supposés lire votre esprit là où vous essayez d'utiliser cela? Une certaine clarté s'il vous plaît? – jfriend00

Répondre

2

Puisque nous ne savons pas où vous essayez d'utiliser toFixed(), voici un exemple de la façon dont vous pouvez l'utiliser dans votre code:

var OriginalResult = ((parseInt(ActualTarget, 10)/parseInt(context, 10)) * 100).toFixed(5); 
1

Étant donné que num est un pourcentage, et pourrait être, comme décrit dans les commentaires: 1.0204081632653061% il est retourné comme une chaîne. Par conséquent, vous devez appeler parseFloat(), afin de récupérer le nombre à virgule flottante, avant d'appeler toFixed():

var num = '1.0204081632653061%'; 
var numTruncated = parseFloat(num).toFixed(5); 

JS Fiddle demo;

Références:

+0

où pourrais-je mettre ceci dans mon code? Je viens de couper et coller et bien que le jquery fonctionne, il ne s'applique pas ce code que vous avez fourni: S merci :)) –

+0

Tout ce que vous avez à faire est d'utiliser la deuxième ligne (la première ligne est juste pour donner quelque chose à travailler, basé sur votre commentaire). Je n'ai aucune idée de l'endroit où le mettre parce que je ne peux pas voir où vous avez utilisé le code à l'origine que vous avez dit n'a pas fonctionné. Mais, fondamentalement, utilisez-le là. Vous n'avez pas besoin de le 'alert()', il suffit de l'utiliser comme vous utiliseriez votre variable 'num' d'origine. –

+0

J'ai jeté ça sur jsfiddle - http://jsfiddle.net/sturobson/xTEKm/37/ –