Nachkomma Stelle in Variable speichern
Igor
- javascript
Hallo!
Ich führe eine Rechnung aus, bei der eine Kommazahl mit einer Nachkomma Stelle rauskommt (also bspw. 0,2).
rechnung = wert1 / wert2;
kommazahl = ??
Die Variable "kommazahl" will ich nun mit der jeweiligen Nachkommastelle der Rechnung bzw. des Ergebnisses der Rechnung füllen (also hier bspw. die "2"), wie kann ich das machen?
Mfg
Igor
Hallo Igor,
Die Variable "kommazahl" will ich nun mit der jeweiligen Nachkommastelle der Rechnung bzw. des Ergebnisses der Rechnung füllen (also hier bspw. die "2"), wie kann ich das machen?
Verwende Modulo.
rechnung = wert1 / wert2;
kommazahl = ??
kommazahl = wert1 % wert2;
Grüße
Andreas
Hi Andreas,
das war - denke ich - nicht die Fragestellung. Auf seine "0,2" kommt er, wenn er z. B. "1 / 5" rechnet. Eine Modulo-Operation bringt ihm an dieser Stelle gar nix :-(
Ciao
Hans-Peter
Hallo Hans-Peter,
das war - denke ich - nicht die Fragestellung. Auf seine "0,2" kommt er, wenn er z. B. "1 / 5" rechnet. Eine Modulo-Operation bringt ihm an dieser Stelle gar nix :-(
Du hast recht. Da hab ich wohl schneller getippt als gedacht :-(
Grüße
Andreas
Hi Igor,
verzeihung, aber die Nachkommazahl ist nicht "2" sondern "0,2". Willst Du vielleicht Divisions-Rest speichern ? Oder anders gefragt, welche Zahl willst Du bei der Berechnung "1/3" speichern ? Wieviel MByte willst Du dafür reservieren ? Oder noch anders gefragt: Was willst Du eigentlich wirklich erreichen ?
Ciao
Hans-Peter
Hallo,
Ich führe eine Rechnung aus, bei der eine Kommazahl mit einer Nachkomma Stelle rauskommt (also bspw. 0,2).
rechnung = wert1 / wert2;
kommazahl = ??Die Variable "kommazahl" will ich nun mit der jeweiligen Nachkommastelle der Rechnung bzw. des Ergebnisses der Rechnung füllen (also hier bspw. die "2"), wie kann ich das machen?
Suchst Du das?
var wert1,wert2,rechnung,kommazahl;
wert1=1;
wert2=5;
rechnung=wert1/wert2;
kommazahl=rechnung.toString().substring(rechnung.toString().indexOf(".")+1,rechnung.toString().length);
alert(rechnung); // 0.2
alert(kommazahl); // 2
MfG, Thomas
[Nachtrag:]
kommazahl=rechnung.toString().substring(rechnung.toString().indexOf(".")+1,rechnung.toString().length);
Verwende diese Zeile, um einen numerischen Wert zu erhalten:
kommazahl=parseInt(rechnung.toString().substring(rechnung.toString().indexOf(".")+1,rechnung.toString().length,10));
MfG, Thomas
Hallo Thomas,
kommazahl=rechnung.toString().substring(rechnung.toString().indexOf(".")+1,rechnung.toString().length);
Das ist vermutlich die perfekte Lösung. Trotzdem komme ich bei derlei Anfragen immer ins Grübeln, ob der Frager weiß, was er sich mit der Antwort einhandelt. Warum er nicht seine Problem beschreibt, sondern den letzten Schritt vor der vermeintlichen Lösung.
Nachkommastellen (1, 5) ergibt tatsächlich 2
Nachkommastellen (1, 3) ergibt bei mir 3333333333333333
und ich würde meine Hand nicht ins Feuer legen, dass das auf einem (8-bittigen) 8051 und einem (64-bittigen) Itanium gerechnet auch herauskommen würde. Hat C schon den "integer" nicht wirklich definieren können, so traue ich das JavaScript - über alle Plattformen hinweg - auch nicht zu.
Weht in derlei Lösungen nicht der Geist, der zum Y2K-Bug geführt hat ?
Ciao
Hans-Peter
Hallo,
Das ist vermutlich die perfekte Lösung.
Nicht unbedingt. Da ist die Loesung von Karin noch effizienter. Wenn keine Nachkommastellen vorhanden sind, ergibt mein Ansatz die Zahl selbst, der von Karin jedoch undefinded.
Hier mal der Versuch mit einer Funktion, die beim Fehlen von Nachkommastellen false zurueck gibt:
function Nachkommastellen(wert)
{
result=parseInt((wert.toString().split("."))[1],10);
return (isNaN(result))?false:result;
}
var wert1,wert2,rechnung,kommazahl;
wert1=1;
wert2=5;
rechnung=wert1/wert2;
alert(Nachkommastellen(rechnung)); // 2
Trotzdem komme ich bei derlei Anfragen immer ins Grübeln, ob der Frager weiß, was er sich mit der Antwort einhandelt.
Das sollte er mal selbst ausfuehren.
MfG, Thomas
Moin!
und ich würde meine Hand nicht ins Feuer legen, dass das auf einem (8-bittigen) 8051 und einem (64-bittigen) Itanium gerechnet auch herauskommen würde. Hat C schon den "integer" nicht wirklich definieren können, so traue ich das JavaScript - über alle Plattformen hinweg - auch nicht zu.
Gerade in JS ist der Number-Typ jedoch sehr klar definiert. Siehe Kapitel 8.5 der ECMA-262-Spec. Das erkauft man sich natuerlich mit einem Verlust an Flexibilitaet. Eine automatische Anpassung an die Maschinenwortbreite des Zielsystems findet nicht statt. Aber meistens ist das ohnehin nicht wuenschenswert. Der Number-Typ aehnelt auch vielmehr dem double aus C als dem int.
So long
Hallo!
Ich führe eine Rechnung aus, bei der eine Kommazahl mit einer Nachkomma Stelle rauskommt (also bspw. 0,2).
rechnung = wert1 / wert2;
kommazahl = ??Die Variable "kommazahl" will ich nun mit der jeweiligen Nachkommastelle der Rechnung bzw. des Ergebnisses der Rechnung füllen (also hier bspw. die "2"), wie kann ich das machen?
MfgIgor
versuchs mal so:
var a, b, test1, test2, test3, gesuchteVariable;
test1 = a / b;
test3 = test1.toString();
test2 = test3.split(".");
gesuchteVariable = test2[1];
das ist die Version fuer ein englisches System, beim deutschen musst du
test3.split(",") machen.
Gruss
Karin
Hi!
versuchs mal so:
var a, b, test1, test2, test3, gesuchteVariable;test1 = a / b;
test3 = test1.toString();
test2 = test3.split(".");
gesuchteVariable = test2[1];das ist die Version fuer ein englisches System, beim deutschen musst du
test3.split(",") machen.
Ein Browser, bei dem das noetig ist, ist definitiv kaputt. Die toString()-Methode einer Number muss immer den englischen Dezimalpunkt verwenden. Anders sieht es aus, wenn man toLocaleString() verwendet, allerdings ist deren Verhalten nicht eindeutig definiert.
So long
Hi Igor,
das würde mich jetzt wirklich mal interessieren: Wozu brauchst Du das ?
Ciao
Hans-Peter