Faire un nombre un pourcentage


104

Quelle est la meilleure façon de supprimer le «0». XXX% de réduction sur un nombre et d'en faire un 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) + "%");
});

Réponses:


199

Un pourcentage est juste:

(number_one / number_two) * 100

Pas besoin de quelque chose d'extraordinaire:

var number1 = 4.954848;
var number2 = 5.9797;

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

47
pour garder le pct décimal: var pct = (num * 100) .toFixed (1) + "%";
efwjames

5
alert (~~ ((nombre1 / nombre2) * 100)); car le Math.floor est plus lent que ~~ :)
nyxz

1
Pourquoi Math.floor? Et non Math.round? Même dans votre exemple, il 4.954848 / 5.9797est plus proche 83%que de 82%vos sorties de code.
gaazkam

9
@nyxz Ugg - vous écrivez du code pour les humains, pas pour les machines. À moins que vous ne soyez dans une boucle critique extrêmement serrée, ~~c'est beaucoup moins lisible queMath.floor
Jeremy J Starcher

5
Aucune raison que je connaisse. 83% de tous les pourcentages sont constitués de toute façon
Naftali aka Neal


36

La meilleure solution, où se entrouve la langue anglaise:

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


1
Attention au support ou pas sur les smartphones .... Actuellement le support n'est pas si idéal.
jdehaan

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

2
@slorenzo 9.23 est en fait 923%. En supposant que vous vouliez 9,23%, vous devrez diviser 9,23 par 100, puis essayer la conversion.
Steve Hawkins

3
@slorenzo Pour obtenir également les chiffres décimaux, vous pouvez essayer quelque chose comme fraction.toLocaleString("en", { style: "percent", minimumFractionDigits: 2 })Voir stackoverflow.com/a/29773435/411428
Manfred

16

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

Math.round(0.123456 * 100) //12

Voici un plugin jQuery pour faire cela:

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

Usage:

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

15
Où est jQuery.roundet jQuery.divideetjQuery.multiply
Raynos

2
@ Xeon06 hmmm l'OP semble avoir changé d'avis. bizarre. ma réponse ne contenait pas assez de jQuery.
Naftali aka Neal

2
@Raynos J'avais commencé sur une multiplication en utilisant une boucle et une ronde en utilisant la manipulation de cordes mais j'ai abandonné la division.
Alex Turpin

2

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

numeral(0.7523).format('0%') // returns string "75%"


1
Le dernier commit numeral.jsétait le 27 mars 2017. Soit la bibliothèque est parfaite (aucun défaut), soit elle n'est plus activement maintenue. Au 28 janvier 2019, le projet avait 135 problèmes en suspens, le plus ancien datant de novembre 2012. Le nombre de problèmes en suspens sans engagement depuis près de 2 ans suggère que le projet n'est plus pris en charge. Heureux d'être convaincu du contraire.
Manfred


1

La plupart des réponses suggèrent d'ajouter «%» à la fin. Je préférerais Intl.NumberFormat()avec{ style: 'percent'}

var num = 25;

var option = {
  style: 'percent'

};
var formatter = new Intl.NumberFormat("en-US", option);
var percentFormat = formatter.format(num / 100);
console.log(percentFormat);


0

La réponse de @ xtrem est bonne, mais je pense que le toFixedet le makePercentagesont d'usage courant. Définissez deux fonctions, et nous pouvons l'utiliser partout.

const R = require('ramda')
const RA = require('ramda-adjunct')

const fix = R.invoker(1, 'toFixed')(2)

const makePercentage = R.when(
  RA.isNotNil,
  R.compose(R.flip(R.concat)('%'), fix, R.multiply(100)),
)

let a = 0.9988
let b = null

makePercentage(b) // -> null
makePercentage(a) // -> ​​​​​99.88%​​​​​

2
Bien que cet extrait de code puisse résoudre la question, inclure une explication aide vraiment à améliorer la qualité de votre message. N'oubliez pas que vous répondez à la question aux lecteurs à l'avenir, et que ces personnes pourraient ne pas connaître les raisons de votre suggestion de code.
31piy
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.