Pb d'arrondi en javascript

Résolu/Fermé
Sabi - 22 oct. 2001 à 11:04
 ZemilZed - 22 sept. 2009 à 23:18
Bonjour,

Je souhaiterai arrondir le résultat d'un calcul à 2 chiffres après la virgule. Existe-il une fonction javascript qui effectue cette opération?
Sinon, comment puis-je faire cela?

Merci d'avance.

3 réponses

Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
22 oct. 2001 à 15:12
Voici une excellente reponse du forum ALL HTML posté par alakazoo_:

Entre <BODY> et </BODY> :
<SCRIPT LANGUAGE=JavaScript>
monchiffre = -75.1598756421;
/* Le chiffre */
document.write('Mon chiffre : '+monchiffre+'<BR>');
/* arrondir */
document.write('Mon chiffre arrondi : '+ Math.round(monchiffre)+'<BR>');
/* valeur absolue */
document.write('Valeur absolue de mon chiffre : '+ Math.abs(monchiffre)+'<BR>');
/* arrondir a l'entier superieur */
document.write('Mon chiffre arrondi à l\'entier superieur : ' + Math.ceil(monchiffre)+'<BR>');
/* arrondir a l'entier inferieur */
document.write('Mon chiffre arrondi à l\'entier inferieur : ' + Math.floor(monchiffre)+'<BR>');
/* arrondir a deux chiffres apres la virgule, facon bidouille ;) */
document.write('Mon chiffre arrondi à deux chiffres : ' + (Math.round(monchiffre*100))/100+'<BR>');

</SCRIPT>

Exemple:
Mon chiffre : -75.1598756421
Mon chiffre arrondi : -75
Valeur absolue de mon chiffre : 75.1598756421
Mon chiffre arrondi à l'entier superieur : -75
Mon chiffre arrondi à l'entier inferieur : -76
Mon chiffre arrondi à deux chiffres : -75.16

-------------------------------------
alakazoo_
-------------------------------------

-= Bobinours =-
10
La methode la plus simple est d'utiliser toPrecision(n) avec n le nombre de chiffre significatif ou toFixed(n) avec n le nombre de chiffre significatif
1
Une methode JavaScript équivalente à number_format de PHP :

/*------------ Script by ZemilZed --------------*/

// NUMBER_FORMAT EN JAVASCRIPT------------------------------------------------------
Number.prototype.number_format = function() { // la déclaration des variables correspond à l'ordre des arguments
var nbDecimales = 2, sepDecimales = '.', carSepMilliers = ','; // les valeurs par défaut des arguments
var nbArgs = arguments.length; // le nombre d'arguments
if (isNaN(this) || !(new RegExp('0|1|3', 'g').test(nbArgs))) return false; // si la valeur recue n'est pas numérique ou que je n'ai pas un nombre cohérent d'arguments
switch (nbArgs) { // selon le nombre d'arguments
case 3: sepDecimales = arguments[1]; carSepMilliers = arguments[2]; // 3 = séparateur milliers, 2 = sép décimale,
case 1: nbDecimales = parseInt(arguments[0]); // 1 = nb décimale
}
var puiss = Math.pow(10, nbDecimales); // puiss sert au calcul d'exposant pour l'arrondi à nbDecimales après sepDecimales
var intNb = parseInt(this), intStr = intNb.toString(), n = intStr.length; // intNb = valeur entière, intStr = valeur entière format texte, n = le nombre de caractère de la valeur entière
if (!isNaN(this) && this == 0) return this + (nbDecimales ? sepDecimales + this.toFixed(nbDecimales).substr(2) : ''); // si la valeur recue est nulle
return ((n % 3 && n > 3) ? intStr.substr(0, n % 3) + carSepMilliers : ( n < 6 ) ? intStr : '') // sortie de la méthode : moins de 1000, puis découper la chaine en paquets de trois caractères,
+ ((n > 3) ? intStr.substr(n % 3).match(new RegExp('[0-9]{3}', 'g')).join(carSepMilliers) : '') // les milliers et le séparateur des milliers
+ (nbDecimales ? sepDecimales + (((Math.round(this*puiss)/puiss).toFixed(nbDecimales)).toString()).substring(n+1) : ''); // le séparateur et les décimales.
} // fin de méthode !!!

// DECLINAISON DE LA METHODE DE CONVERTION DE FORMAT NUMERIQUE----------------------
Number.prototype.nbFormatFrancais = function() { // afficher une valeur en format français
return this.number_format(arguments[0] ? arguments[0] : 2, ',', ' ');
} // fin de sous méthode
Number.prototype.nbEnglishFormat = function() { // afficher une valeur en format anglais
return this.number_format(arguments[0] ? arguments[0] : 2, '.', ',');
} // fin de sous méthode
Number.prototype.nbFormatCalc = function() { // afficher une valeur en format calculatrice
return this.number_format(arguments[0] ? arguments[0] : 2, '.', '\'');
} // fin de sous méthode
1