Ich muss einen Währungswert im Format 1K von eintausend oder 1,1K, 1,2K, 1,9K usw. anzeigen, wenn er nicht gerade Tausend ist, andernfalls, wenn er unter tausend liegt, werden normale 500, 100, 250 usw. Angezeigt Verwenden Sie Javascript, um die Nummer zu formatieren?
javascript
jquery
formatting
numbers
Carl Weis
quelle
quelle
M
undG
?Antworten:
Klingt so, als ob dies für Sie funktionieren sollte:
quelle
$mynumber_output
wo füge ich diese ein, um sie zu verwenden? Zum Beispiel, sagen wir$mynumber_output
= 12846, ich möchte, dass 12846 um12.8k
Eine allgemeinere Version:
quelle
if (num >= si[i].value)
mitif (Math.abs(num) >= si[i].value)
.replace(rx, "$1")
das1.0
wird1
und1.10
wird1.1
Hier ist eine einfache Lösung, die alle
if
Aussagen vermeidet (mit der Kraft vonMath
).Bonus Meme
Wofür steht
SI
?quelle
Math.abs
, um negative Zahlen wie folgt zu unterstützen :var tier = Math.log10(Math.abs(number)) / 3 | 0;
.Weitere Verbesserung von Salmans Antwort, da nFormatter (33000) als 33.0K zurückgegeben wird
jetzt nFormatter (33000) = 33K
quelle
Thx @Cos für einen Kommentar, ich habe die Math.round10-Abhängigkeit entfernt.
quelle
Math.abs(num) >= decimal
.Viele Antworten in diesem Thread werden durch die Verwendung von mathematischen Objekten, Kartenobjekten, for-Schleifen, regulären Ausdrücken usw. ziemlich kompliziert. Diese Ansätze verbessern jedoch nicht wirklich die Lesbarkeit des Codes oder die Leistung. Ein direkter Ansatz scheint das beste Design zu bieten.
Barwert mit K formatieren
Barwert mit KMBT formatieren
Negative Zahlen verwenden
quelle
'-' + formatCash(-1 * number)
Geben Sie Waylon Flinn Kredit, wenn Sie dies mögen
Dies wurde von seinem eleganteren Ansatz zum Umgang mit negativen Zahlen und ".0" -Fällen verbessert.
Je weniger Schleifen und "Wenn" -Fälle Sie haben, desto besser ist die IMO.
jsFiddle mit Testfällen -> https://jsfiddle.net/xyug4nvz/7/
quelle
abbreviateNumber(999999) == '1000k'
statt'1M'
. Dies liegt daran, dasstoFixed()
auch die Zahlen gerundet werden. Ich bin mir jedoch nicht sicher, wietoFixed()
die Nummer trotzdem gerundet wird, können Sie die Nummer auch runden, bevor Sie sie an sendenabbreviateNumber()
, sodass sie1M
statt zurückgegeben wird1000k
. Keine Lösung, sondern eine Problemumgehung.const floored = Math.floor(scaled * 10) / 10;
ES2020 bietet Unterstützung für die
Intl.NumberFormat
Verwendung der Notation wie folgt:NumberFormat
Spezifikationen:Beachten Sie, dass derzeit nicht alle Browser ES2020 unterstützen. Daher benötigen Sie möglicherweise diese Polyfill: https://formatjs.io/docs/polyfills/intl-numberformat
quelle
notation
und,compactDisplay
aber FireFox 77 und Safari 13.1 unterstützen es immer noch nicht, sodass Sie wahrscheinlich die Polyfüllung benötigen.das ist ziemlich elegant.
quelle
Sie können das Paket im d3-Format verwenden , das der erweiterten Python- Zeichenfolgenformatierung PEP3101 nachempfunden ist :
quelle
Weitere Verbesserung der Antwort von @ Yash mit Unterstützung für negative Zahlen:
quelle
Dieser Beitrag ist ziemlich alt, aber ich habe diesen Beitrag irgendwie erreicht und nach etwas gesucht. SO, um meine Eingabe hinzuzufügen Numeral js ist jetzt die One-Stop-Lösung. Es gibt eine Vielzahl von Methoden zur Formatierung der Zahlen
http://numeraljs.com/
quelle
Kurze und generische Methode
Sie können das
COUNT_FORMATS
Konfigurationsobjekt je nach dem von Ihnen getesteten Wertebereich so lang oder kurz machen, wie Sie möchten.quelle
Wenn Sie die oberste Antwort hinzufügen, erhalten Sie 1k für 1000 anstelle von 1.0k
quelle
Eine modifizierte Version von Waylon Flinns Antwort mit Unterstützung für negative Exponenten:
Erwartete Ausgabe:
quelle
!Number.isFinite
' K M G T P E Z Y'
zu,' K M'
wenn Sie möchten, dass die maximale Einheit istM
Der folgende Code lautet 1K = 1024. Wenn Sie 1K = 1000 möchten, ändern Sie alle 1024 in 1000.
quelle
Verbessern Sie die Antwort von @ tfmontague weiter, um Dezimalstellen zu formatieren. 33,0k bis 33k
quelle
Keine der veröffentlichten Lösungen zufrieden, daher hier meine Version:
Unterstützt einen Präzisionsparameter
quelle
Ich habe mir einen sehr Code-Golf ausgedacht, und er ist sehr kurz!
quelle
Weitere Verbesserung von Salmans Antwort aufgrund von Fällen wie nFormatter (999999,1), die 1000K zurückgeben.
quelle
Der einfachste und einfachste Weg, dies zu tun, ist
Dies funktioniert für eine beliebige Anzahl. Einschließlich
L
Cr
etc.quelle
Durch Eliminieren der Schleife in der @ martin-sznapka-Lösung reduzieren Sie die Ausführungszeit um 40%.
Geschwindigkeitstest (200000 Zufallsstichproben) für eine andere Lösung als dieser Thread
quelle
quelle
Diese Funktion kann große Zahlen (sowohl positive als auch negative) in ein leserfreundliches Format umwandeln, ohne an Genauigkeit zu verlieren:
quelle
Ich benutze diese Funktion. Es funktioniert für beide
php
undjavascript
.quelle
Ich habe mich entschlossen, die Antwort von @ Novellizator hier stark zu erweitern, um meinen Anforderungen gerecht zu werden. Ich wollte eine flexible Funktion, um die meisten meiner Formatierungsanforderungen ohne externe Bibliotheken zu erfüllen.
Eigenschaften
Beispiele
Funktion
quelle
Wow, hier gibt es so viele Antworten. Ich dachte, ich würde Ihnen geben, wie ich es gelöst habe, da es am einfachsten zu lesen schien, mit negativen Zahlen umgeht und weit im Kilo-Zahlenbereich für JavaScript liegt. Es wäre auch einfach, zu ändern, was Sie wollen oder noch weiter zu erweitern.
quelle