【发布时间】:2016-08-02 13:16:28
【问题描述】:
我正在尝试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:当打印 array[i] - max 时,我得到了正确的差异......除了它是负数。
【问题讨论】:
-
(注意:最好使用
for (var i = 0而不是for (i = 0。) -
数组的内容是什么?
-
您也可以使用
Math.min.apply(null, array)获得最大/最小。见jsbin.com/somexiwopo/edit?js,console,output
标签: javascript floating-point max