Javascript 比较数字不起作用

标签 javascript floating-point max

我正在尝试 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 时,我得到了正确的差异...除了它是负数。

最佳答案

这是因为你的数组包含字符串,而不是数字。

所以 '9.95799' > '89.86874' => 真 :) 改用数字

关于Javascript 比较数字不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38721514/

相关文章:

javascript - Pdf.js:使用 base64 文件源而不是 url 呈现 pdf 文件

php - 使用下拉菜单动态更改照片

c++ - 将 4 个原始字节转换为 32 位 float

C: 浮点运算的结果总是归一化的吗?

algorithm - 这个函数返回的值是多少?

mysql - sql,只保留最大值,删除其他值

javascript - JavaScript 中 typeof ... undefined 的 ClojureScript 模拟是什么?

javascript - 无法分配给定义为可写的属性

c++ - 在 C++ 中实现长方程时,如何通过高级方法提高性能

numpy - 沿 Numpy ndarray 轴的最大值?