Script JS pour formater un prix a partir d'une valeur rationnel ou irrationnel
Voici un petit script simple pour faire ce travail :<script language="javascript" type="text/javascript">
//alert('Math.PI = ' + formatage_nombre(Math.PI));
//alert('12345.6789 = ' + formatage_nombre(12345.6789 ));
//alert('999999999 = ' + formatage_nombre(999999999));
//alert('-00001 = ' + formatage_nombre(-00001));
//alert('"6000123" = ' + formatage_nombre("6000123" ));
//alert('Rien = ' + formatage_nombre('Rien'));
//alert('Rien 2 = ' + formatage_nombre());
/*
* formatage du nombre en prix marche avec nombre entre -999999999 et 999999999
* @param float nombre a formater
* @return string nombre formater ($0.00 si nombre invalide recu)
*/
function formatage_nombre(fltNombre)
{
try
{
var intTemp = 0;
var fltNombre = parseFloat(fltNombre);
if (isNaN(fltNombre)) fltNombre = 0;
var fltNb = fltNombre;
var strNb = '$ ';
// si negatif on met le signe - et on remet en positif
if (fltNb < 0)
{
strNb += '-';
fltNb = Math.abs(fltNb);
fltNombre = Math.abs(fltNombre);
}
// affichage des millions au besoin
if (fltNb >= 1000000)
{
intTemp = Math.floor(fltNb / 1000000);
fltNb -= (intTemp * 1000000);
if (intTemp < 100 && fltNombre >= 1000000000) strNb += '0';
if (intTemp < 10 && fltNombre >= 1000000000) strNb += '0';
if (intTemp == 0 && fltNombre >= 1000000000) strNb += '0';
strNb += intTemp;
strNb += ',';
// si un nombre avec des million mais pas de millier on écrit ici 00 pour les milier ex: 6000123
if (fltNb < 1000) strNb += '000,';
}
// affichage des millier
if (fltNb >= 1000)
{
intTemp = Math.floor(fltNb / 1000);
fltNb -= (intTemp * 1000);
if (fltNombre >= 1000000)
{
if (intTemp < 100) strNb += '0';
if (intTemp < 10) strNb += '0';
if (intTemp == 0) strNb += '0';
}
strNb += intTemp;
strNb += ',';
}
//alert('fltNombre = ' + fltNombre + '\n fltNb = ' + fltNb);
// affichage des centaines
if (fltNombre >= 1000)
{
if (fltNb < 100) strNb += '0';
if (fltNb < 10) strNb += '0';
}
fltNb.toFixed(2);
strNb += fltNb.toFixed(2);
return strNb;
}
catch(e)
{
alert('Erreur formatage_nombre \n' + e.message);
}
}
</script>