Arrondi à 2 c après la virgule en javascript [Fermé]

jeremy - 27 juin 2008 à 16:26 - Dernière réponse :  tarek
- 11 oct. 2017 à 18:09
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
Afficher la suite 

13 réponses

+29
Utile
6
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 tou ceux qui cherchent encore ^^
Cette réponse vous a-t-elle aidé ?  
Merci, je cherchais justement
conseil198 51 Messages postés jeudi 9 janvier 2014Date d'inscription 28 avril 2014 Dernière intervention - 18 mars 2014 à 16:45
Merci Korri
Merciiiiiiiiii
0
Utile
1
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"
0
Utile
2
Haa JS et le calcul !!!

J'avais eut le meme soucis avec un vieux script il y a longtemps.

Je crois que je les avais fractionnés car pour JS
0.1+0.1+0.1 = 0.30000000000000004

alors que 1Dixieme + 1Dixieme + 1Dixieme = 3 Dixièmes
Merci de revoir tes bases en informatique avant de déterrer un topic pour balancer des conneries comme ça.
clmo10 1 Messages postés jeudi 29 décembre 2016Date d'inscription 29 décembre 2016 Dernière intervention - 29 déc. 2016 à 14:27
Par ailleurs pouet, merci d'essayer avant de parler de bases en informatique car pour javascript,
var patate = 0.1 + 0.1 + 0.1;
console.log(patate);

Renvoie 0.30000000000000004
mattabile 1 Messages postés mercredi 4 janvier 2017Date d'inscription 4 janvier 2017 Dernière intervention - 4 janv. 2017 à 10:21
0
Utile
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
Commenter la réponse de mattabile