たとえば、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';
}
}
一方で、元のコードはよりシンプルで、私にとっては楽しみです。しかし、私が検討していることが1つあります。i== STANDARD_LINEはジュニアチームメイトを誤解させますか?浮動小数点数に丸め誤差がある可能性があるという事実を隠していますか?この投稿のコメントを読んだ後:
一部の浮動小数点数が正確であることを知らない開発者が多いようです。私の場合、浮動小数点数の等価比較が有効であっても、避けるべきですか?または、私はこれについて考えすぎていますか?
button
ループのどこでも変わらないという事実に、私はかなり気を散らしています。ボタンのリストにはどのようにアクセスしますか?配列または他のメカニズムへのインデックス経由?配列へのインデックスアクセスによる場合、これは整数への切り替えを支持するもう1つの引数です。
i
、2番目のリストでは整数になります。2番目を削除してみてください/2.0
。