例如,我想显示一个从0,0.5,... 5开始的按钮列表,每0.5跳一次。我使用for循环来做到这一点,并在按钮STANDARD_LINE上使用了不同的颜色:
var MAX=5.0;
var DIFF=0.5
var STANDARD_LINE=1.5;
for(var i=0;i<=MAX;i=i+DIFF){
button.text=i+'';
if(i==STANDARD_LINE){
button.color='red';
}
}
在这种情况下,应该没有舍入错误,因为每个值在IEEE 754中都是准确的。
var MAX=10;
var STANDARD_LINE=3;
for(var i=0;i<=MAX;i++){
button.text=i/2.0+'';
if(i==STANDARD_LINE/2.0){
button.color='red';
}
}
一方面,原始代码更加简单并转发给我。但是我正在考虑一件事:i == STANDARD_LINE是否误导了初级队友?它是否掩盖了浮点数可能具有舍入误差的事实?阅读这篇文章的评论后:
似乎有很多开发人员不知道某些浮点数是准确的。即使在我的情况下有效,我是否应该避免浮点数相等性比较?还是我在考虑这个问题?
button
循环中的任何地方都不会改变的事实深为分散注意力。如何访问按钮列表?通过索引到数组还是其他机制?如果是通过对数组的索引访问,则这是另一个支持切换为整数的参数。
i
永远不会是第二个列表中的整数。尝试删除第二个/2.0
。