Aus 1.4 mach 1,40 oder aus 1 mach 1,00 oder ...
Griever
- javascript
0 Andreas Dölling0 Griever
0 Dennis0 Struppi0 Cybaer
Hi.
Ich hab' da mal eine (mehr oder weniger) einfache Frage.
Gibt es eine Möglichkeit, eine Zahl, die Von Javascript bearbeitet wurde, in ein passendes Format zu rücken?
So z. B.:
Javascript spuckt 1.5 aus. Doch ich möchte es als 1,50 haben.
Das geht ja noch. Doch das, was ich irgendwie nicht rauskrieg, ist das anfügen von Leeren Nachkommastellen. So z. B. 1 (JavaScript gibt es so zurück) soll zu 1,00 werden.
Gibt es da schon etwas, was man frei verwenden kann?
Wenn ja, wo kann man das nachlesen?
Und bitte nicht solche Leseinformationen wo kein fünkchen Beispiel dabei ist. Lieb wäre mir ein richtiges Anzeigebeispiel, wo es demonstriert wird, oder eine Aufbauanleitung für eine solche Funktion.
Schon jetzt vielen Dank.
MFG
Griever
Hallo,
eine fertige Standardfunktion wie etwa in PHP gibt es dafür in Javascript nicht. Aber Google hilft weiter.
Ich habe gesucht nach "Javascript + number + format" und u.a. dies gefunden: http://www.mredkj.com/javascript/numberFormat.html.
Das sieht doch schon gut aus, oder?
Ciao,
Andreas
Das runden ist eigentlich nicht mein Problem.
Mir kommt es auf die Kommastelle an. Ich möchte nicht, dass Javascript mir das .00 wegrationalisiert und auch den . möchte ich in ein , umwandeln.
Ich denke, das war es, was ich mit dem Einleitungsposting versucht habe, zu sagen.
MFG
Griever
Hallo,
Mir kommt es auf die Kommastelle an. Ich möchte nicht, dass Javascript mir das .00 wegrationalisiert und auch den . möchte ich in ein , umwandeln.
http://www.mredkj.com/javascript/numberFormat.html
Ciao,
Andreas
toFixed() und toPrecision() wollte ich auch mal verwenden, aber die verursachen bei mir einige Fehler.
Anscheinend unterstützt mein IE diese Funktionen nicht.
MFG
Griever
Hi Griever,
Gibt es da schon etwas, was man frei verwenden kann?
Wenn ja, wo kann man das nachlesen?
Schau dir mal to_fixed() bzw. to_precision() an - letzteres dürfte vermutlich das sein, was du suchst.
MfG, Dennis.
Hi.
Schau dir mal to_fixed() bzw. to_precision()
Tut mir leid. Beides ist nicht das, was ich suchte. Ähm. Vielleicht hilft euch das weiter, wenn ich direkt nach der Funktionsweise von NumberFormat() aus PHP (nur für JavaScript) frage ...
MFG
Griever
hi,
Schau dir mal to_fixed() bzw. to_precision()
Tut mir leid. Beides ist nicht das, was ich suchte.
Und zwar nicht, weil ...?
Ähm. Vielleicht hilft euch das weiter, wenn ich direkt nach der Funktionsweise von NumberFormat() aus PHP (nur für JavaScript) frage ...
Vielleicht hilft es dir weiter, wenn du dir eine analoge Funktion in Javascript _selber schreibst_.
Stringoperationen sollten ja bekannt sein.
gruß,
wahsaga
Ja.
Das versuche ich ja.
function Umstellen(Wert2) {
var temp,stelle1,stelle2,leer=false;
// Wenn mit Komma ...
if(String(Wert2).search(",")!=-1)
{
// Aufsprengen mit ","
temp=String(Wert2).split(",")
}
// oder mit Punkt übergeben wurde
else if(String(Wert2).search(".")!=-1)
{
// Aufsprengen mit "."
temp=String(Wert2).split(".")
}
if(temp[1])
{
if(String(temp[1]).length<2)
{
// fehlende Nullen anhängen.
for(var i = 0;i<2-temp[1].length;i++)
temp[1]+="0";
}
else if(String(temp[1]).length>2)
{
// Nachkommastellen in teile Splitten.
temp[1].split("")
temp[1][1]=(temp[1][2]<5)?temp[1][1]:temp[1][1]+1;
temp[1][0]=(temp[1][1]<10)?temp[1][0]:temp[1][0]+1;
temp[0] = (temp[1][0]<10)?temp[0]:temp[0]+1;
// Rundungsoperation (Math.round konnte ich hier nicht mehr verwenden.)
// Ich weiß, dass es doof aussieht. Korrekturen erwünscht!
}
}
else
{
// Doppelnullen anhängen, wenn keine Nachkommastelle.
temp[1] = "00";
}
temp=temp[0]+","+temp[1][0]+""+temp[1][1]
return String(temp);
}
Wenn du verbesserungsvorschläge hast, kannst dich ruhig daran auslassen. Ich brauche echt dringen Hilfe dabei. Habe noch nie so mit Zahlen gearbeitet ...
MFG
Griever
Hallo Griever,
Wenn du verbesserungsvorschläge hast, kannst dich ruhig daran auslassen. Ich brauche echt dringen Hilfe dabei. Habe noch nie so mit Zahlen gearbeitet ...
Deine Funktion ist eine typische EVA-Geschichte:
Du hast eine Eingabe (deren Bereich Du uns geschickterweise verschwiegen hast)
Deine Eingabe besteht anscheinend aus einem String, der eine Zahl darstellen soll. Bitte erläutere uns _ganz genau_ welche Darstellungsformen Du berücksichtigen möchtest. Das hast Du auch bei Deiner Funktion noch nicht getan.
Ausgabe soll wohl eine normale Zahl in nichtdeutscher Darstellung mit zwei Nachpunktstellen werden, habe ich das richtig verstanden?
Die Verarbeitung sollte wie folgt erfolgen:
Erkenne das Eingabeformat der Zeichenkette.
Wandle diese Zeichenkette in einen Zahlwert um.
Wende auf diesen Zahlwert to_fixed() an.
Gebe das Ergebnis zurück.
Wo ist das Problem?
Freundliche Grüße
Vinzenz
Die Verarbeitung sollte wie folgt erfolgen:
Erkenne das Eingabeformat der Zeichenkette.
Wandle diese Zeichenkette in einen Zahlwert um.
Wende auf diesen Zahlwert to_fixed() an.
Gebe das Ergebnis zurück.Wo ist das Problem?
to_fixed() <<< Da!
Nun gut. Der Übergebene Wert ist eine Zahl. welche bis zu 7 Stellen haben kann (komma und nachkommastellen zählen somit als Stelle).
Diese wird übergeben.
Danach wird diese "string" in seine Einzelteile Zerlegt.
Ich habe aber das komplette schon fertig.
Gibt man der Funktion eine 10000 so gibt diese Funktion 10000,00 zurück. Gibt man der Funktion eine 0 dann passiert das gleiche. Bei einer Zahl, wie 1, oder 1. wird es trotzdem verarbeitet (if ist cool!).
Dazu habe ich mir extra was geschrieben, um das Runden möglich zu machen.
Hier meine fertige Funktion:
function Umstellen(Wert2) {
var temp,stelle1,leer=false;
if(String(Wert2).search(",")!=-1)
{
temp=String(Wert2).split(",")
}
else
if(String(Wert2).search(".")!=-1)
{
temp=String(Wert2).split(".")
}
if(temp[1])
{
if(String(temp[1]).length<2)
{
for(var i = 0;i<2-temp[1].length;i++)
temp[1]+="0";
}
else
if(String(temp[1]).length>2)
{
temp[1].split("");
temp[1][1]=(temp[1][2]<5)?temp[1][1]:temp[1][1]+1;
temp[1][0]=(temp[1][1]<10)?temp[1][0]:temp[1][0]+1;
temp[0] = (temp[1][0]<10)?temp[0]:temp[0]+1;
}
}
temp=temp.join(",");
if(Math.floor(Number(temp))==Number(temp))
return String(temp)+",00";
else
return String(temp);
}
Setze diese Funktion mal in ein Document und rufe die Funktion in einem document.write auf.
so:
document.write(Umstellen(1,2)+"<br>")
document.write(Umstellen(1.2)+"<br>")
document.write(Umstellen(12)+"<br>")
document.write(Umstellen(12.521)+"<br>")
document.write(Umstellen(1.525)+"<br>")
document.write(Umstellen(0)+"<br>")
Du erhälst:
1,20
1,20
12,00
12,52
1,53
0,00
So wollte ich das.
Also hat sich mein Problem (zumindest im Wesentlichen) gelöst.
So dürfte ich auch die Tausender-Trennzeichen dazwischen-fügen können, oder?
Wenn du noch fragen, Ideen, tips, Verbesserungsvorschläge usw. hast, nur zu.
MFG
Griever
Hallo Griever,
Wo ist das Problem?
to_fixed() <<< Da!
kopiere mal folgendes in die Adresszeile deines Browsers:
javascript:s="1";alert(s+" -> "+Number(s.replace(/,/,'.')).toFixed(2).replace(/./,','));
und
javascript:s="1,23456";alert(s+" -> "+Number(s.replace(/,/,'.')).toFixed(2).replace(/./,','));
Gruß, Jürgen
Ich hab' da mal eine (mehr oder weniger) einfache Frage.
Gibt es eine Möglichkeit, eine Zahl, die Von Javascript bearbeitet wurde, in ein passendes Format zu rücken?
Du hast sicher schon mal was von google gehört, dein Problem läßt sich mit drei Schlagwörter ausdrücken Zahlen formatieren javascript
Direkt der erste Treffer ist eine Funktion die deinen Anforderungen zu 100% erfüllen sollte.
Struppi.
Hi,
Javascript spuckt 1.5 aus. Doch ich möchte es als 1,50 haben.
Das geht ja noch. Doch das, was ich irgendwie nicht rauskrieg, ist das anfügen von Leeren Nachkommastellen. So z. B. 1 (JavaScript gibt es so zurück) soll zu 1,00 werden.
dann z.B. dez(1.5,0,2,'','',',')
Gruß, Cybaer