2016-11-26 4 views
2

Ich habe Probleme beim Vergleichen km Entfernung, es im obigen Beispiel sagen, im Vergleich Abstand zwischen Standorten, diese Standorte sind in km.Vergleichen Dezimalzahlen in Javascript

9,441.4<1500 

Die Ausgabe sagt mir, dass 9 Tausend weniger als 1 Tausend ist. In meinem Fall, sollte ich 1500 oder nur den Punkt und das Komma zu 1500.0 hinzufügen oder hinzufügen, oder gibt es mehr als nur das?

+0

',' ?????? ???? ist das eine 'Nummer' oder eine' Zeichenfolge' ???? –

Antwort

5

Sie sollten das Komma entfernen. Sie verwenden kein Tausendertrennzeichen in JavaScript-Nummern.

Also warum ist es nicht mit einem Syntaxfehler fehlgeschlagen? Weil es gültige Syntax ist: JavaScript hat ein Komma Operator. Ihr Code war die Nummer 9, gefolgt vom Komma-Operator, gefolgt vom Vergleich 441.4 < 1500. Der Komma-Operator ist einer von JavaScript's mehr ... interessanten ... Operatoren: Er wertet den linken Operanden aus (9 in Ihrem Beispiel), verwirft den resultierenden Wert und bewertet dann seinen rechten Operanden (441.4<1500 in Ihrem Beispiel) und nimmt den resultierenden Wert als den Wert des Komma-Operatorausdrucks.

Sie wollten:

9441.4<1500 
+0

Hallo, das Problem ist, dass ich das Komma von 9.441.4 nicht entfernen kann, wie es von der API ausgegeben wird. – Pedro

+2

@Pedro: Es ist Ihre einzige Option, Sie müssen entweder die API reparieren, um eine gültige JavaScript-Nummer auszugeben, oder das API-Ergebnis als Zeichenfolge behandeln, das Komma entfernen und dann das Ergebnis auswerten. Wenn Sie dabei Probleme bekommen, posten Sie eine neue, separate Frage mit dem vollständigen Kontext, damit Ihnen die Leute helfen können. Aber das ist die Antwort auf diese Frage. –

+0

@Pedro API wird Werte in Zeichenfolge zurückgeben. Sie müssen es manuell analysieren. versuchen Sie 'var n = parseFloat (apiNum.replace (/ [^ 0-9.]/g, ''))' – Rajesh

0

Wie T.J. Crowder sagte, müssen Sie das Komma, entfernen und den String in eine Gleitkommazahl konvertieren:

$api_input = "9,441.4"; 

$tmp = str_replace(",", "", $api_input); 

$distance = floatval($tmp);