添加为字符串而不是数字

Adds as string instead of number

本文关键字:数字 字符串 添加      更新时间:2023-09-26

当我添加两个初始化为数字的变量时,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是我正在编写的库的名称,用于可视化三角形的所有重要点和线段。很抱歉造成混乱,我可能应该编辑。

虽然已经回答的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

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