浮点-Javascript比较数字是't工作
floating point - Javascript comparing numbers isn't working
我正在尝试规范化数据,并意识到它不起作用,因为我得到了不正确的最大值。然而,数字的比较并不正确。这是我的代码:
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'=>真:)使用数字代替
@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);
}
}
}
我希望这能带来更多的启示。
相关文章:
- 用户名输入如果其他块不能正常工作/Javascript-jQuery-AJAX
- 变量只能在函数中局部工作,不能全局工作-Javascript
- onClick按钮不工作javascript/php/jquery mobile
- 点击骰子赢得't工作(javascript)
- for循环,if else不工作Javascript
- 获取下一个不工作Javascript DOM的同级父节点的子节点
- 可以'没有一个函数可以工作——Javascript
- OnFocus 不是工作 JavaScript HTML;不显示对焦时计算和按钮单击时
- 从 iframe 访问主站点中的工作 JavaScript
- 对于在循环中无法按预期工作 JavaScript
- 在阅读表单输入后写回HTML;t工作(Javascript)
- 复选框单击有效,取消选中复选框不工作Javascript
- 代码在Codepen中工作,而不是在浏览器中工作:JavaScript在鼠标滚轮上缩放SVG
- 当用户在这个工作javascript注释框中提交注释时,您将如何添加用户图像和名称
- 向Wordpress添加工作Javascript谷歌地图代码
- 确认/重定向功能不工作-javascript
- 当/patt/版本工作时,为什么RegExp版本不工作?(Javascript)
- Firefox加载项按钮代码不工作-Javascript
- 计算器功能不工作- Javascript
- 将工作JavaScript对象序列化为仅保留属性的JSON