2016-03-18 11 views
0

hinzu Wenn ich zwei Variablen, die ich als Zahlen initialisiere, hinzufüge, betrachtet JS sie als eine Zeichenkette und verkettet sie. In einer Berechnung wie folgtFügt als Zeichenfolge anstelle der Zahl

var p1 = new window.TRIGEO.Point(150, 150); 
var p2 = new window.TRIGEO.Point(500, 350); 
var p3 = new window.TRIGEO.Point(50, 500); 
var medicentre = new Point((p1.x+p2.x+p3.x)/3,(p1.y+p2.y+p3.y)/3); 

(wobei Punkt x und y als Mitglieder hat), medicentre riesig => (5016683,33, 50116833,33). Ich will das nicht, wenn die Antwort tatsächlich => (233.33, 333.33) ist.

Gibt es eine Möglichkeit, dieses Verhalten zu überschreiben, ohne die Formel zu lang zu machen, weil ich eine andere habe, die mindestens drei Zeilen lang ist. Ist das möglich ohne parseInt()?

EDIT:

Point-Objekt ist die folgende und das ist es!

function Point(x, y) { 
    this.x = x; 
    this.y = y; 
} 

TRIGEO ist der Name der Bibliothek schreibe ich alle wichtigen Punkte und Liniensegmente eines Dreiecks zu visualisieren. Entschuldigung für die Verwirrung, die ich wahrscheinlich hätte ändern sollen.

+3

@WashingtonGuedes ich denke du meinst, bevor jede Eigenschaft Zugriff ('+ P1.x + + p2.x') –

+0

@MikeC Oh, es ein Objekt zurückgibt, mein schlecht.. (dachte, es wäre eine Schnur) :) –

Antwort

0

während Parsint wie bereits beantwortet ist technisch korrekt, wenn Sie eine kürzere Formel möchten, können Sie das Casting Trick durch Ihre Werte positiv zu machen (so lange, wie Sie sie wissen, werden nicht nicht-Numberic Werte haben

var num1 = '1111.11'; 
var num2 = 2222.22; 
var n1plus2 = (+num1)+num2 
// n1p2 : 3333.33 

oder beide Strings:

var num1 = '1111.11'; 
var num2 = '2222.22'; 
var n1p2 = (+num1)+(+num2); 
// n1p2 : 3333.33 
+0

sollte noch funktionieren, überprüfen Sie bearbeiten. es sei denn, sie werden nicht wirklich Strings –

+0

wann wurde diese Funktion hinzugefügt? Ich wusste nicht, dass es @ Whashington Guedes gab! – Gouthamm4G

+1

mit Leerzeichen können Sie die Paranthesis löschen: 'var n1p1 = + num1 + + num2;' –

-1

JavaScript betrachtet sie nicht als string. Sie führen wahrscheinlich eine Operation in der Point Klasse aus und konvertieren sie.

function A(x, y) { 
    this.x = x; 
    this.y = y; 
} 

var a = new A(1, 1), 
    b = new A(2, 2), 
    c = new A(a.x + b.x, a.y + b.y); 

alert(c.x + " - " + c.y) 

Dies wird 3 - 3 wie erwartet ausgeben.

+0

Ich würde nicht empfehlen, die Quelle eines Thi zu ändern rd Party-Bibliothek, wenn Sie nicht sehr sehr sicher darüber sind –

+1

Javascript ** tut ** sie als eine Zeichenfolge oder es würde nicht verketten sie. –

+0

Es ist nicht JavaScript, das sie als Zeichenfolgen betrachtet, es ist buchstäblich die "Point" -Klasse, die sie als Variable vom Typ "String" innerhalb ihrer Implementierung zuweist. Aber danke für den schnellen Downvote. –

Verwandte Themen