J'aimerais arrondi à 2 décimales, mais seulement si nécessaire.
Entrée:
10
1.7777777
9.1
Sortie:
10
1.78
9.1
Comment puis-je faire cela en JavaScript?
J'aimerais arrondi à 2 décimales, mais seulement si nécessaire.
Entrée:
10
1.7777777
9.1
Sortie:
10
1.78
9.1
Comment puis-je faire cela en JavaScript?
Si la valeur est le type de texte:
parseFloat("123.456").toFixed(2);
Si la valeur est le nombre:
var numb = 123.23454;
numb = numb.toFixed(2);
Il y a un inconvénient que des valeurs comme la 1.5 sera une "1.50" comme la sortie. Un correctif proposé par @minitech:
var numb = 1.5;
numb = +numb.toFixed(2);
// Note the plus sign that drops any "extra" zeroes at the end.
// It changes the result (which is a string) into a number again (think "0 + foo"),
// which means that it uses only as many digits as necessary.
MarkG réponse est la bonne. Voici une extension générique pour n'importe quel nombre de chiffres après la virgule.
Number.prototype.round = function(places) {
return +(Math.round(this + "e+" + places) + "e-" + places);
}
Utilisation:
var n = 1.7777;
n.round(2); // 1.78
Unité de test:
it.only('should round floats to 2 places', function() {
var cases = [
{ n: 10, e: 10, p:2 },
{ n: 1.7777, e: 1.78, p:2 },
{ n: 1.005, e: 1.01, p:2 },
{ n: 1.005, e: 1, p:0 },
{ n: 1.77777, e: 1.8, p:1 }
]
cases.forEach(function(testCase) {
var r = testCase.n.round(testCase.p);
assert.equal(r, testCase.e, 'didn\'t get right number');
});
})
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.