当我添加两个我初始化为数字的变量时,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
是我用来可视化三角形的所有重要点和线段的库的名称。对不起,我可能应该编辑。
答案 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
。