Menu

Javascript Arrondi à 2 chiffres après la virgule [Résolu/Fermé]

-
Bonjour,

je cherche une fonction javascript qui permettrait d'arrondir un nombre à deux chiffres après la virgule (un peu comme number_format du php), car la fonction round() ne permet d'arrondir qu'à l'unité!

Merci
Ciao

Jérémy
Configuration: Windows Vista
Firefox 2.0.0.14
Afficher la suite 

3 réponses

Meilleure réponse
approuvée par Jean-François Pillou le 20 déc. 2018
48
Merci
La réponce est tardive mais elle pouras servir a quelques uns :

Ils n'éxiste pas de méthode toute faite pour ça aussi tu doit faire

Math.round(ton_chiffre*100)/100;


Sinon tu peut utiliser la class Number et faire

var ton_chiffre = 12.3455633; // Ta variable de chiffre
ton_chiffre.toFixed(2); //r'enveras 12.35..


Voila pour tous ceux qui cherchent encore ^^

Dire « Merci » 48

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 58868 internautes nous ont dit merci ce mois-ci

conseil198
Messages postés
51
Date d'inscription
jeudi 9 janvier 2014
Dernière intervention
28 avril 2014
11 -
Merci Korri
Merciiiiiiiiii
0
Merci
Désolé de déterrer un sujet si vieux, mais aucune de ses deux possibilités ne fonctionnent. J'obtient toujours des chiffres du type : "324.70000000000005".
function total_price(){
  function total_price(){
   var prix = 0;
   $.each($(".price"), function() {
    prix += (Math.round($( this ).val()*100)/100);
   });
   $("#total_price").text(prix + " €");
  }
   
  jQuery(document).ready(function(){
    total_price();
  });
  
  $( document ).on( "change", "section",function() {
    total_price();
  });
  
  $( document ).on( "change", "input",function() {
    $("[name="+$(this).attr('id')+"]").text($(this).val());
    $("#price [name="+$(this).attr('id')+"]").text(Math.round(($(this).val()*.85)*100)/100);
  });
essaye ton_chiffre.toFixed(nbre apres la virgule) par ex 19.597.toFixed(2) =>"19.60"
Messages postés
1
Date d'inscription
mercredi 4 janvier 2017
Dernière intervention
4 janvier 2017
0
Merci
Le pb c'est que toFixed ne formate pas créé un arrondi donc 12,1 devient 12,1 au lieu de 12,10 dans le cas de la monnaie.

 function nombreFormate(sNombre, decimales, signe, separateurMilliers) {
    var _sNombre = String(this),
    i, _sRetour = "",
    _sDecimales = "";
    if (decimales == undefined) decimales = 2;
    if (signe == undefined) signe = '.';
    if (separateurMilliers == undefined) separateurMilliers = ' ';

    function separeMilliers(sNombre) {
        var sRetour = "";
        while (sNombre.length % 3 != 0) {
            sNombre = "0" + sNombre;
        // console.log(sNombre)
        }
        for (i = 0; i < sNombre.length; i += 3) {
            if (i == sNombre.length - 1) separateurMilliers = '';
            sRetour += sNombre.substr(i, 3) + separateurMilliers;
        //  console.log(sRetour);
        }
        while (sRetour.substr(0, 1) == "0") {
            sRetour = sRetour.substr(1);
        //  console.log(sRetour);
        }
        //  console.log(sRetour.substr(0, sRetour.lastIndexOf(separateurMilliers)))
        return sRetour.substr(0, sRetour.lastIndexOf(separateurMilliers));
    }
    // console.log(sNombre);
    if (sNombre.indexOf('.') == -1) {
        //_sDecimales="";
        for (i = 0; i < decimales; i++) {
            //     console.log(_sDecimales);
            _sDecimales += "0";
        }
        _sRetour = separeMilliers(sNombre) + signe + _sDecimales;
    // console.log(_sRetour);
    } else {
        var sDecimalesTmp = (sNombre.substr(sNombre.indexOf('.') + 1));
        if (sDecimalesTmp.length > decimales) {
            var nDecimalesManquantes = sDecimalesTmp.length - decimales;
            var nDiv = 1;
            for (i = 0; i < nDecimalesManquantes; i++) {
                nDiv *= 10;
            }
            _sDecimales = Math.round(Number(sDecimalesTmp) / nDiv);
        } else {
            _sDecimales = sDecimalesTmp;
            for (i = sDecimalesTmp.length; i < decimales; i++) {
                _sDecimales += "0";
            }
        }
        _sRetour = separeMilliers(sNombre.substr(0, sNombre.indexOf('.'))) + String(signe) + _sDecimales;
    }
    return _sRetour;
}

$nombre=nombreFormate("18000.1",2, ',', ' '); // 18 000,10