Javascript 如何防止恼人的浮点连接
我在我的一个项目中有一个函数,它做一些向量计算。最近我开始注意到结果中的不一致性,当我深入挖掘时,我发现在某些地方,JavaScript会执行串联而不是加法。搜索时,我发现可以通过添加Javascript 如何防止恼人的浮点连接,javascript,Javascript,我在我的一个项目中有一个函数,它做一些向量计算。最近我开始注意到结果中的不一致性,当我深入挖掘时,我发现在某些地方,JavaScript会执行串联而不是加法。搜索时,我发现可以通过添加parsefloat()来防止它,以确保变量是浮动的。现在我有了这个: function getsqSegDistID(p, p1, p2) { var x = parseFloat(p1.x), y = parseFloat(p1.y), dx = p2.x - x,
parsefloat()
来防止它,以确保变量是浮动的。现在我有了这个:
function getsqSegDistID(p, p1, p2) {
var x = parseFloat(p1.x),
y = parseFloat(p1.y),
dx = p2.x - x,
dy = p2.y - y;
if (dx !== 0 || dy !== 0) {
var t = (parseFloat((p.x - x) * dx) + parseFloat((p.y - y) * dy)) / (parseFloat(dx * dx) + parseFloat(dy * dy));
if (t > 1) {
x = p2.x;
y = p2.y;
} else if (t > 0) {
x = parseFloat(x) + parseFloat(dx * t);
y = parseFloat(y) + parseFloat(dy * t);
}
}
dx = p.x - x;
dy = p.y - y;
return parseFloat(dx*dx) + parseFloat(dy*dy);
}
看到我放在那里的所有parseFloat
了吗?
所以我的问题是,在每次添加之前添加一个parsefloat会显著降低函数的性能。现在执行此操作所需的时间是以前的5倍
1.我是否必须在每次加法之前放入parseFloat?还是有更好的办法
2.我是一名C/Java开发人员,但我正在帮助一位朋友编写一些处理逻辑。那么为什么JavaScript没有某种形式的数据类型强制呢
parseFloat
,只要确保对所有传递的变量都调用它即可。我看到您最初解析p1.x
和p1.y
,但对p
或p2
中的值不做同样的操作parseFloat
,只要确保对所有传递的变量都调用它即可。我看到您最初解析p1.x
和p1.y
,但对p
或p2
中的值不做同样的操作