添加为字符串而不是数字

时间:2016-03-18 17:18:43

标签: javascript string numbers

当我添加两个我初始化为数字的变量时,JS会将它们视为字符串并将它们连接起来。在如下计算中,

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);

(其中Point有x和y作为成员),medicentre是巨大的=>(5016683.33,50116833.33)。当答案实际上是=>(233.33,333.33)时,我不想要这个。

有没有办法覆盖这种行为而不会使公式太长,因为我有另一个,至少三行长。这可能不使用parseInt()

编辑:

点对象如下,那就是它!

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

TRIGEO是我用来可视化三角形的所有重要点和线段的库的名称。对不起,我可能应该编辑。

2 个答案:

答案 0 :(得分:0)

虽然已经回答的Parsint在技术上是正确的,如果你想要一个更短的公式,你可以通过使你的价值积极来欺骗铸造(只要你知道他们不会有非数字值

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

或两个字符串:

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

答案 1 :(得分:-1)

JavaScript不会将它们视为string。您可能在Point类中执行操作并转换它们。

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)

这将按预期输出3 - 3