125 votes

Faire d'un nombre un pourcentage

Quel est le meilleur moyen de supprimer le "0."XXX% d'un nombre et le transformer en pourcentage ? Que se passe-t-il si le nombre est un entier ?

var number1 = 4.954848;
var number2 = 5.9797;

$(document).ready(function() {    
    final = number1/number2;
    alert(final.toFixed(2) + "%");
});

235voto

Neal Points 68710

Un pourcentage est simplement :

(number_one / number_two) * 100

Pas besoin de quelque chose de compliqué :

var number1 = 4.954848;
var number2 = 5.9797;

alert(Math.floor((number1 / number2) * 100)); //w00t!

53 votes

Pour conserver la décimale en pourcentage: var pct = (num*100).toFixed(1) + "%";

8 votes

Alert(~~((number1 / number2) * 100)); comme Math.floor est plus lent que ~~ :)

3 votes

Pourquoi Math.floor? Et pas Math.round? Même dans votre exemple 4.954848 / 5.9797 est plus proche de 83% que de 82% de votre code produira.

66voto

Moussa Points 756
((portion/total) * 100).toFixed(2) + '%'

46voto

Liron Shapira Points 149

La meilleure solution, où en est le paramètre de localisation en anglais :

fraction.toLocaleString("en", {style: "percent"})

1 votes

Faites attention au support ou non sur les smartphones.... Actuellement, le support n'est pas idéal.

0 votes

(9.23).toLocaleString("fr", {style: "percent"}) retourne "923%", y a-t-il un moyen de le résoudre?

2 votes

@slorenzo 9.23 est en fait 923%. En supposant que vous voulez 9.23%, vous devriez diviser 9.23 par 100 et ensuite essayer la conversion.

21voto

Alex Turpin Points 17272

Eh bien, si vous avez un nombre comme 0.123456 qui est le résultat d'une division pour donner un pourcentage, multipliez-le par 100 puis arrondissez-le ou utilisez toFixed comme dans votre exemple.

Math.round(0.123456 * 100) //12

Voici un plugin jQuery pour le faire :

jQuery.extend({
    percentage: function(a, b) {
        return Math.round((a / b) * 100);
    }
});

Utilisation :

alert($.percentage(6, 10));

15 votes

Où se trouvent jQuery.round, jQuery.divide et jQuery.multiply ?

2 votes

@Xeon06 hmmm l'OP semble avoir changé d'avis. bizarre. ma réponse n'avait pas assez de jQuery dedans.

2 votes

@Raynos J'avais commencé sur un multiply en utilisant une boucle et un round en utilisant la manipulation de chaîne, mais j'ai abandonné sur la division.

1voto

adamwdraper Points 129

Numeral.js est une bibliothèque que j'ai créée qui peut formater les chiffres, les devises, les pourcentages et qui prend en charge la localisation.

numeral(0.7523).format('0%') // retourne la chaîne de caractères "75%"

numeral.js

4 votes

Le dernier commit pour numeral.js était le 27 mars 2017. Soit la bibliothèque est parfaite (sans défauts), soit elle n'est plus activement entretenue. Au 28 janvier 2019, le projet compte 135 problèmes ouverts, le plus ancien datant de novembre 2012. Le nombre de problèmes ouverts sans commit depuis presque 2 ans suggère que le projet n'est plus suivi. Nous serions ravis d'être convaincus du contraire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X