Diese Funktion geht davon aus, dass das, was ihr übergeben wird, ein String mit einem Dezimalpunkt und zwei Nachkommastellen ist. Um Ihre Zahl zuerst in diesem Format zu erhalten, verwenden Sie diese.
Dann trennt diese Funktion die Zahl ordnungsgemäß mit Kommas. Zum Beispiel gibt 2345643.00 2.345.643,00 zurück.
function CommaFormatted(amount) {
var delimiter = ","; // replace comma if desired
var a = amount.split('.',2)
var d = a[1];
var i = parseInt(a[0]);
if(isNaN(i)) { return ''; }
var minus = '';
if(i < 0) { minus = '-'; }
i = Math.abs(i);
var n = new String(i);
var a = [];
while(n.length > 3) {
var nn = n.substr(n.length-3);
a.unshift(nn);
n = n.substr(0,n.length-3);
}
if(n.length > 0) { a.unshift(n); }
n = a.join(delimiter);
if(d.length < 1) { amount = n; }
else { amount = n + '.' + d; }
amount = minus + amount;
return amount;
}
Gibt es etwas Ähnliches für PHP?
http://us3.php.net/manual/en/function.number-format.php
number_format();
Ohhh.. Wunderbares Code-Schnipsel. Lange gesucht.
So mache ich es
function addCommas(nStr)
{
nStr += ”;
var x = nStr.split(‘.’);
var x1 = x[0];
var x2 = x.length > 1 ? ‘.’ + x[1] : ”;
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, ‘$1’ + ‘,’ + ‘$2’);
}
return x1 + x2;
}
Jack, deine Funktion ist viel besser, danke. Die Funktion aus dem Beitrag ist voller Fehler.
Wie wäre es mit diesem Skript.
Gibt es eine Möglichkeit, ein Komma oder ein Leerzeichen zwischen den Zahlen in diesem Zähler einzufügen?
kasa=new Date(2008 ,12 ,60 ,30 ,01);
setInterval(function(){
with(Math){
var w=floor(((new Date())-kasa)/1000),lr,dr,mr,
l=floor(w/31536000),d=floor((lr=w%31536000)/86400),
g=floor((dr=lr%86400)/3600),m=floor((mr=dr%3600)/60),
s=floor(mr%60);
document.getElementById(‘money’).innerHTML=
(l?l+’ Jahre, ‘:””)+d+’ Tage,’+g+’ Stunden, ‘
+m+’ Min., ‘+s+’ Sek.’;
}
},1000);
setInterval(function(){
document.getElementById(‘MoneyCounter’).innerHTML=
((new Date())-kasa);
},130);
Hier ist dasselbe in einer Zeile. Wenn jemand es besser kann, bitte mitteilen.
function commas(str) { return str.replace(/.(?=(?:.{3})+$)/g, '$&,'); }Kann es nicht kürzer machen, aber ich kann es so korrigieren, dass es numerische Argumente annimmt!
function commas(str) {
return (str+””).replace(/.(?=(?:.{3})+$)/g, ‘$&,’);
}
Hmm… und es auf eine umständliche Weise mit Dezimalzahlen umgehen lassen. ;-)
function commas(str) {return (str+””).replace(/.(?=(?:[0-9]{3})+\b)/g, ‘$&,’);
function format(input)
{
var num=input.value.replace(/[^\d]/g,”);
if(num.length>3)
num = num.replace(/\B(?=(?:\d{3})+(?!\d))/g, ‘-‘);
input.value=num;
}
Hallo Chris,
Wenn der Betrag 2200 ist, gibt Ihre Variable „d“ einen Fehler als undefinierte Variable zurück und das Skript wird nicht ausgeführt. Dieses Skript funktioniert nur, wenn Ihr Betrag 2200,00 beträgt. Daher habe ich Ihr Skript bearbeitet und in meiner Website verwendet ;) unten ist der überarbeitete Code, der dieses Problem möglicherweise löst.
function CommaFormatted(amount) {var delimiter = ","; // Komma nach Wunsch ersetzen
var a = amount.split('.',2)
var d = a[1];
var i = parseInt(a[0]);
if(isNaN(i)) {
return '';
}
var minus = '';
if(i < 0) {
minus = '-';
}
i = Math.abs(i);
var n = new String(i);
var a = [];
while(n.length > 3) {
var nn = n.substr(n.length-3);
a.unshift(nn);
n = n.substr(0,n.length-3);
}
if(n.length > 0) {
a.unshift(n);
}
n = a.join(delimiter);
if(d) {
if(d.length < 1) {
amount = n;
} else {
amount = n + '.' + d;
}
} else {
amount = n + ".00"
}
amount = minus + amount;
return amount;
}
Gott segne “.toLocaleString()”
@Yashar Imanlou: Leider wird die Methode toLocaleString() noch nicht weitgehend unterstützt, siehe http://caniuse.com/#search=locale.
Ich möchte es in HTML verwenden, wie kann ich das hinzufügen?
document.getElementById(“demo”).innerHTML = commer();
Oder um documen.wrte = “12.345”; zu verwenden
Ich muss etwas wie das hier machen: 12345 zu 12.345
numeral.js ( http://numeraljs.com )
Dieser hier scheint der einfachste / schnellste zu sein…
function commas(str) {
return str.replace(/.(?=(?:.{3})+$)/g, ‘$&,’);
}
Aber bitte lachen Sie nicht… Ich gebe ehrlich zu, dass ich kein Programmierer bin. Versuche nur eine einfache Änderung auf einer Seite vorzunehmen – Kommas hinzufügen. Habe 40 Minuten lang damit gespielt und nichts erreicht.
Ich versuche, eine Variable, die ich berechnet habe und auf der Seite verwende („calculatedHours“), mit Kommas anzuzeigen. Hatte KEINE Ahnung, dass das so ein großes Ding ist…
Erklären Sie es mir, als wäre ich 6 Jahre alt. Wo würde ich das in die Funktion einfügen?
Ich dachte, es wäre
function commas(calculatedHours) {
return str.replace(/.(?=(?:.{3})+$)/g, ‘$&,’);
}
und dann
document.write(calculatedHours)
Aber nein… was muss ich ersetzen, um die Variable calculatedHours mit Kommas anzeigen zu lassen?
Mann… das ist frustrierend. Ich habe mich vorher mit Inhalten (HTML) auf meiner Seite beschäftigt und dachte, ein paar Zeilen Java wären nicht so schwierig. Es ist verrückt schwierig. Ich hätte es nie in Angriff genommen – ich lagere jedes Design (usw.) aus, aber die Zeit, die es gedauert hat, eine einfache Seite zu erstellen, war erstaunlich.
Immer noch festgefahren. Alles, was ich möchte, ist, dass ein paar Zahlen zur besseren Lesbarkeit mit Kommas angezeigt werden. Es gibt eine Variable (eigentlich ein paar, aber ich hoffe, wenn ich die Methode beherrsche, kann ich sie wiederholen).
Hier ist der Abschnitt (ICH FÜGE IM WORT S C R I P T LEERZEICHEN EIN, DAMIT ES HIER ANGEZEIGT WIRD – DAS IST DER *EINZIGE* UNTERSCHIED)
< s c r i p t >
document.write(“Bis heute sind “)
document.write(calculatedHours)
document.write(” Stunden vergangen…”)
< / s c r i p t >
Es gibt aus
Bis heute sind 3965 Stunden vergangen…
Ich möchte, dass es so ausgegeben wird
Bis heute sind 3.965 Stunden vergangen…
GIBT ES WIRKLICH KEINE EINFACHE MÖGLICHKEIT, SO ETWAS SCHEINBAR EINFACHES ZU TUN????
Jedes Stück Code, das ich kopiere, funktioniert nicht… Ich bin sicher, da gibt es ein paar „natürlich“-Dinge, die ich verpasse, und der Fehler liegt bei mir, weil ich es nicht weiß, aber kann mir jemand ein paar Zeilen Code geben, um das zu erreichen?
Danke
Kann jemand das kurz ausprobieren?
Versuche immer noch, etwas zu tun, das einfach erscheinen sollte…
Ich habe eine Variable berechnet („calculatedHours“) und versuche, sie mit Kommas anzeigen zu lassen.
Ich dachte, es wäre
function commas(calculatedHours) {
return str.replace(/.(?=(?:.{3})+$)/g, ‘$&,’);
}
und dann
document.write(calculatedHours)
…. funktioniert nicht. Sieht jemand das Problem / kann mir jemand ein paar Zeilen Code posten, die funktionieren würden?
Danke….
Schon vergessen.
Hier ist, was funktioniert, für andere, die auf diese Seite / Frage stoßen
<
script type=”text/javascript”>
function numberWithCommas(x) { // Zamaria
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, “,”);
}
document.write(numberWithCommas(calculatedHours))
Ich verwende diese Funktion, um eine sich ständig erhöhende Zahl innerhalb eines div-Elements zu generieren. http://jsfiddle.net/obysrnm2/
Hat jemand Vorschläge, wie man den Generator mit dem Trennzeichen kombiniert. Meine Implementierungen scheinen mit einem Fehler zurückzukehren.
**Zeichen**… N00bs…
"1,234,567,890"Das alles ist ein falsches Konzept. Im Allgemeinen sollte ein Programmierer/Entwickler die Zahlen nicht „formatieren“.
Das richtige Konzept
Clientseitig (Browser) sollte die „regionalen Einstellungen“ vom Betriebssystem gelesen und die Zahlen entsprechend formatiert werden. Dies sollte hauptsächlich in „input“-Feldern sowie in Inline-Texten, die mit einem Tag umschlossen sind, geschehen.
Z.B.:
<number>123456</number> => 123.456<number decimals="2">123456789E-4</number> => 12.345,68
Absolut einverstanden! Ich bin nicht neu in der Programmierung, aber ich bin neu in der Webprogrammierung. Und konnte nicht glauben, dass etwas so Triviales und so weithin Benötigtes nicht gelöst ist! Für ein (ziemlich großes) Projekt, an dem wir arbeiten, war die beste Lösung, die wir gefunden haben, die Verwendung von jQuery-Input-Masken (https://github.com/RobinHerbots/Inputmask)
Gibt es einen Grund, warum man nicht einfach number.toLocaleString() verwenden sollte? Es erlaubt Ihnen, Ihre eigenen Trennzeichen festzulegen usw., aber standardmäßig gibt es die Zahl einfach als String mit korrekt eingefügten Kommas zurück.
JavaScript hat eine Methode namens toFixed(), die Ihre Zahlen formatiert, sodass sie Kommas haben und Sie sogar 2 Dezimalstellen hinzufügen können. Wenn Sie also eine Zahl wie 12345678.90 haben, konvertiert .toFixed() diese in 12.345.678,90. Siehe https://www.w3schools.com/jsref/jsref_tofixed.asp, wie man sie verwendet.
Was ist mit numObj.toLocaleString()? Verwenden?
JavaScript unterstützt jetzt die toLocaleString()-Methode, was bedeutet, dass Sie Ihren Code-Schnipsel nicht mehr benötigen. Tut mir leid! Aber schöner Code