我正在尝试normalize data并意识到它无法正常工作,因为我得到了不正确的最大值。但是,数字的比较并没有正常工作。这是我的代码:
var max = Number.MIN_VALUE;
var min = Number.MAX_VALUE;
for (i = 0; i < array.length; i++)
{
if(array[i]>max)
{
max = array[i];
}
}
for (i = 0; i < array.length; i++)
{
if(array[i]<min)
{
min = array[i];
}
}
console.log("max: " + max);
console.log("min: " + min);
for (i = 0; i < array.length; i++)
{
if(array[i]!=0)
{
if(array[i]>max)
{
console.log(i+": " + array[i] + " yes");
}
else
{
console.log(i+": " + array[i] + " no " + max);
}
}
}
我得到了很多控制台输出,但这是一个例子:
241590: 17.5799 no 9.86874
意思是由于某种原因,JS认为17.5799不大于9.86874。为什么会发生这种情况,我该怎么做才能解决这个问题?谢谢!
编辑1:当打印数组[i] - max时,我最终得到了正确的差异......除了它是否定的。
答案 0 :(得分:5)
这是因为你的数组包含字符串,而不是数字。
所以&#39; 9.95799&#39; &GT; &#39; 89.86874&#39; =&GT;真的:) 请改用数字
答案 1 :(得分:0)
@Darkves是正确的 - 您看到了这种行为,因为数组包含字符串而不是数字。因此,您应该使用parseFloat
解析数组的各个项,然后比较结果值。
以下是代码段:
for (var i = 0; i < array.length; i++)
{
if(parseFloat(array[i])!=0)
{
if(parseFloat(array[i])>max)
{
console.log(i+": " + array[i] + " yes");
}
else
{
console.log(i+": " + array[i] + " no " + max);
}
}
}
我希望这会有更多的亮点。