Ich habe zwei Zeichenfolgen, die nur Zahlen enthalten:
var num1 = '20',
num2 = '30.5';
Ich hätte erwartet, dass ich sie addieren könnte, aber sie werden stattdessen verkettet:
num1 + num2; // = '2030.5'
Wie kann ich erzwingen, dass diese Zeichenfolgen als Zahlen behandelt werden?
javascript
Andrew
quelle
quelle
MDN-Dokumente für parseInt
MDN-Dokumente für parseFloat
In parseInt wird radix als zehn angegeben, sodass wir uns in Basis 10 befinden. In nicht striktem Javascript wird eine mit vorangestellte Zahl
0
als oktal behandelt. Dies würde offensichtlich Probleme verursachen!In der Antwort von ChaosPandion finden Sie auch eine nützliche Verknüpfung mit einem unären Operator . Ich habe eine Geige aufgestellt, um die verschiedenen Verhaltensweisen zu zeigen.
http://jsfiddle.net/EtX6G/
quelle
+num1 + +num2
ist kürzer, wohl eleganter. Grundsätzlich+
konvertiert der unäre Operator zuNumber
Ich würde empfehlen, den unären Plus-Operator zu verwenden, um zu erzwingen, dass eine eventuelle Zeichenfolge als Zahl in Klammern behandelt wird, um den Code wie folgt lesbarer zu machen:
In Ihrem Fall ist es also:
quelle
quelle
Konvertieren Sie die Zeichenfolgen in
floats
mitparseFloat(string)
oder nachintegers
mitparseInt(string)
quelle
parseInt(string, 10)
siehe developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Wenn Sie zwei Zeichenfolgen addieren müssen, bei denen es sich um sehr große Zahlen handelt, müssen Sie die Addition an jeder Zeichenfolgenposition auswerten:
quelle
Sie können dies verwenden, um Zahlen hinzuzufügen:
quelle
Versuchen
oder je nach Ihren Bedürfnissen:
http://www.javascripter.net/faq/convert2.htm
Vielleicht möchten Sie das Buch Javascript: The Good Parts von Douglas Crockford in die Hand nehmen . Javascript hat eine ziemlich große Sammlung von Fallstricken! Dieses Buch trägt wesentlich zur Klärung bei. Siehe auch
und Mr. Crockfords ausgezeichneter Aufsatz, Javascript: Die am meisten missverstandene Programmiersprache der Welt .
quelle
Ich habe immer nur Null abgezogen.
Zugegeben, die unäre Operatormethode ist ein Zeichen weniger, aber nicht jeder weiß, was ein unärer Operator ist oder wie man googelt, um herauszufinden, wenn er nicht weiß, wie er heißt.
quelle
Wenn Sie eine Operation mit Zahlen als Zeichenfolgen ausführen möchten (wie in dem Fall, in dem Zahlen größer als 64 Bit sind), können Sie die Big-Integer- Bibliothek verwenden.
quelle
Hier haben Sie zwei Möglichkeiten, dies zu tun: -
.
Jetzt zeige ich es Ihnen hier anhand von Beispielen (Finden Sie die Summe zweier Zahlen).
Verwenden des unären Plus-Operators
Verwenden des Parsing-Ansatzes
quelle
quelle
Sie können
parseInt
eine Zeichenfolge auf eine Zahl analysieren. Um auf der sicheren Seite zu sein, geben Sie immer10
das zweite Argument an, das in Basis 10 analysiert werden soll.quelle
Stellen Sie sicher, dass Sie Ihre endgültige Antwort auf weniger als 16 Dezimalstellen für Floats runden, da das Java-Skript fehlerhaft ist.
Zum Beispiel 5 - 7,6 = -2,5999999999999996
quelle
@ cr05s19xx schlug eine doppelte Frage vor:
JavaScript ist ein bisschen lustig, wenn es um Zahlen und Addition geht.
Folgendes geben
'20' - '30' = 10; // gibt 10 als Zahl zurück '20' + '30' = '2030'; // Gibt sie als Zeichenfolge zurück. Die von document.getElementById zurückgegebenen Werte sind Zeichenfolgen. Daher ist es besser, sie alle (auch die funktionierenden) auf Zahl zu analysieren, bevor Sie mit der Addition oder Subtraktion fortfahren. Ihr Code kann sein:
quelle
Verwenden Sie die
parseFloat
Methode, um die Zeichenfolgen in Gleitkommazahlen zu analysieren:quelle
Ich benutze dies in meinem Projekt. Ich benutze + Zeichen, um Zeichenfolge als Zahl zu behandeln (in with_interesst Variable)
Ich hoffe es hilft
quelle
Funktioniert in meinem Fall, wenn Sie auf dasselbe Problem wie ich stoßen und keine Lösung für diesen Fall finden und diese SO-Frage finden.
Entschuldigung für ein bisschen Off-Topic, aber als ich gerade herausfand, dass dies funktioniert, dachte ich, dass es sich lohnen könnte, es zu teilen.
Ich weiß nicht, ob es sich um eine schmutzige oder tatsächlich legitime Problemumgehung handelt.
quelle
Sie können wie folgt verwenden:
Wenn Sie * 1 in num1 anwenden, konvertieren Sie einen String in eine Zahl.
Wenn num1 einen Buchstaben oder ein Komma enthält, wird NaN multipliziert mit 1 zurückgegeben
Wenn num1 null ist, gibt num1 0 zurück
mit freundlichen Grüßen!!!
quelle
Versuchen Sie dies, wenn Sie nach einfachem Javascript-Code suchen und zwei Eingabefelder verwenden und Zahlen aus den beiden Werten hinzufügen möchten. Hier ist der Code.
Weitere Informationen finden Sie unter http://informativejavascript.blogspot.nl/2012/12/javascript-basics.html
quelle