Signaler

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

Posez votre question jeremy - Dernière réponse le 11 oct. 2017 à 18:09 par tarek
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
Utile
+30
plus moins
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 ^^
égaré- 13 nov. 2010 à 12:01
Merci, je cherchais justement
conseil198 51Messages postés jeudi 9 janvier 2014Date d'inscription 28 avril 2014 Dernière intervention - 18 mars 2014 à 16:45
Merci Korri
mampiononaa- 23 juin 2014 à 10:47
Merciiiiiiiiii
kostra- 14 août 2014 à 18:08
merci ^^
Utile
+0
plus moins
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);
});
sofians- 29 oct. 2015 à 14:46
essaye ton_chiffre.toFixed(nbre apres la virgule) par ex 19.597.toFixed(2) =>"19.60"
Utile
+0
plus moins
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
pouet- 29 avril 2016 à 15:20
Merci de revoir tes bases en informatique avant de déterrer un topic pour balancer des conneries comme ça.
clmo10 1Messages 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
Répondre
Utile
+0
plus moins
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
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !