2017-09-15 6 views
0

Je me demande comment supprimer efficacement les zéros décimale d'un prix tout en gardant les 2 décimales s'ilprix toLocaleString sans zéros décimales

Donc, si un prix est 135.00 il devrait devenir 135.

Si un prix est 135.30, il doit conserver les deux décimales.

Si un prix est 135.38 il peut garder les décimales.

C'est ce que j'ai en ce moment:

const currency = 'EUR'; 
const language = 'NL'; 

var localePrice = (amount) => { 
    const options = { 
    style: 'currency', 
    currency: currency 
    }; 

    return amount.toLocaleString(language, options); 
} 

Maintenant, je pourrais utiliser regex ou quelque chose de similaire, mais je suis espère qu'il ya un moyen plus facile de réaliser ce but.

J'ai fait un JSFiddle qui illustre mon problème, ce qui le rend facile à jouer avec le code.

https://jsfiddle.net/u27a0r2h/2/

Répondre

1

Vous pouvez ajouter une fonction de contrôle si le nombre est un nombre entier ou non, et utiliser une condition au sein de votre fonction localePrice pour appliquer la mise en forme (jouer avec tranche pour enlever la décimale):

function isInt(n) { 
    return n % 1 === 0; 
} 

const currency = 'EUR'; 
const language = 'NL'; 


var localePrice = (amount) => { 
    const options = { 
    style: 'currency', 
    currency: currency 
    }; 

    if (isInt(amount)){ 
    return amount.toLocaleString(language, options).slice(0, -3); 
    } 
    else { 
    return amount.toLocaleString(language, options); 
    } 
} 

document.querySelector('.price').innerHTML = localePrice(135.21); 

document.querySelector('.price-zeroes').innerHTML = localePrice(135.00); 

document.querySelector('.price-with-one-zero').innerHTML = localePrice(135.30);