Ausgabe ohne KOMMA, aber als EUR formatiert , toLocaleString
bearbeitet von Rolf BHallo Gunnar,
ob diese Methode ist, was der OP will, ist völlig unklar. Von einer automatischen Umschaltung zwischen "mit/ohne Cents" je nach Betrag war keine Rede.
Wenn überhaupt, dann sollte man sie `toEuroString` nennen und einen booleschen Parameter `roundToFullEuro` vorsehen.
Und das schön in {} verpackt um die Format-Objekte aus dem globalen Scope rauszuhalten. IIFEs sind sowas von 2011…
Dazu das fullEuro Objekt so anlegen, dass es withCents als Prototyp verwendet. Warum die Properties doppelt definieren?
Die useGrouping Zeile kann man aktivieren, wenn die Tausendertrenner nicht gewünscht sind.
~~~
{
const withCents = {
style: 'currency',
currency: 'EUR',
// useGrouping: false,
},
fullEuro = Object.create(withCents);
fullEuro.minimumFractionDigits = 0;
fullEuro.maximumFractionDigits = 0;
Number.prototype.toEuroString = function(roundToFullEuro) {
return this.toLocaleString(
'de-DE',
roundToFullEuro ? fullEuro : withCents
);
};
}
console.log((12345.67).toEuroString());
// -> 12.345,67 €
console.log((12345.67).toEuroString(false));
// -> 12.345,67 €
console.log((12345.67).toEuroString(true));
// -> 12.346 €
~~~
_Rolf_
--
sumpsi - posui - obstruxi
Ausgabe ohne KOMMA, aber als EUR formatiert , toLocaleString
bearbeitet von Rolf BHallo Gunnar,
ob diese Methode ist, was der OP will, ist völlig unklar. Von einer automatischen Umschaltung zwischen "mit/ohne Cents" je nach Betrag war keine Rede.
Wenn überhaupt, dann sollte man sie `toEuroString` nennen und einen booleschen Parameter `roundToFullEuro` vorsehen.
Und das schön in {} verpackt um die Format-Objekte aus dem globalen Scope rauszuhalten. IIFEs sind sowas von 2011…
Dazu das fullEuro Objekt so anlegen, dass es withCents als Prototyp verwendet. Warum die Properties doppelt definieren?
~~~
{
const withCents = {
style: 'currency',
currency: 'EUR',
useGrouping: false,
},
fullEuro = Object.create(withCents);
fullEuro.minimumFractionDigits = 0;
fullEuro.maximumFractionDigits = 0;
Number.prototype.toEuroString = function(roundToFullEuro) {
return this.toLocaleString(
'de-DE',
roundToFullEuro ? fullEuro : withCents
);
};
}
console.log((12345.67).toEuroString());
// -> 12.345,67 €
console.log((12345.67).toEuroString(false));
// -> 12.345,67 €
console.log((12345.67).toEuroString(true));
// -> 12.346 €
~~~
_Rolf_
--
sumpsi - posui - obstruxi