Je n'ai aucune idée comment faire ça? J'ajoute des nombres de virgule, le résultat est bien sûr toujours un nombre avec beaucoup trop de chiffres après la virgule. n'importe qui?
EDIT 2 :
Utilisez la méthode Number
de l'objet toFixed
comme ceci:
var num = Number(0.005) // The Number() only visualizes the type and is not needed
var roundedString = num.toFixed(2);
var rounded = Number(roudedString); // toFixed() returns a string (often suitable for printing already)
Il arrondit 42,0054321 à 42,01
Il arrondit 0,005 à 0,01
Il arrondit de -0,005 à -0,01 (la valeur absolue augmente donc lorsque l'on arrondit à la limite de 0,5)
PDATE: Gardez à l'esprit qu'au moment où la réponse a été écrite en 2010, la fonction ci-dessous, toFixed (), fonctionnait légèrement différemment. toFixed () semble arrondir maintenant, mais pas de manière strictement mathématique. Alors soyez prudent avec elle. Faites vos tests ... La méthode décrite ci-dessous va bien arrondir, comme le mathématicien s'y attendrait.
toFixed()
- la méthode convertit un nombre en chaîne en conservant un nombre spécifié de décimales. En fait, il n’arrondit pas un nombre, il le tronque.Math.round(n)
- arrondit un nombre à l'entier le plus proche. En tournant ainsi:0,5 -> 1; 0,05 -> 0
donc, si vous voulez arrondir, dites le nombre 0.55555, uniquement à la deuxième décimale; vous pouvez faire ce qui suit (c'est un concept pas à pas):
0.55555 * 100
= 55.555Math.Round(55.555)
-> 56.00056.000 / 100
= 0.56000(0.56000).toFixed(2)
-> 0.56et voici le code:
(Math.round(number * 100)/100).toFixed(2);
Cela a fonctionné pour moi:
var new_number = float.toFixed(2);
Exemple:
var my_float = 0.6666
my_float.toFixed(3) # => 0.667
Les réponses précédentes ont oublié de saisir à nouveau la sortie sous forme de nombre. Il y a plusieurs façons de le faire, selon vos goûts.
+my_float.toFixed(2)
Number(my_float.toFixed(2))
parseFloat(my_float.toFixed(2))
Ce n’est pas vraiment convivial pour le processeur, mais:
Math.round(number*100)/100
fonctionne comme prévu.
Bien que nous ayons beaucoup de réponses ici avec beaucoup de suggestions utiles, chacune d’elles manque encore quelques étapes.
Voici donc une solution complète regroupée dans une petite fonction:
function roundToTwoDigitsAfterComma(floatNumber) {
return parseFloat((Math.round(floatNumber * 100) / 100).toFixed(2));
}
Juste au cas où vous êtes intéressé comment cela fonctionne:
toFixed(2)
pour conserver 2 chiffres après la virgule et jetez les autres parties inutiles.parseFloat()
fonction en tant que toFixed(2)
renvoie chaîne à la placeRemarque: Si vous conservez les deux derniers chiffres après une virgule pour avoir utilisé des valeurs monétaires et effectuer des calculs financiers conserver l'esprit que c'est pas une bonne idée et vous feriez mieux d'utiliser des valeurs entières à la place.
utilisez le code ci-dessous.
alert(+(Math.round(number + "e+2") + "e-2"));
J'utilise ceci:
function round(value, precision) {
if(precision == 0)
return Math.round(value);
exp = 1;
for(i=0;i<precision;i++)
exp *= 10;
return Math.round(value*exp)/exp;
}