Ad esempio, voglio mostrare un elenco di pulsanti da 0,0.5, ... 5, che salta per ogni 0.5. Uso un ciclo for per farlo e ho colori diversi sul pulsante 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';
}
}
In questo caso non ci dovrebbero essere errori di arrotondamento poiché ogni valore è esatto in IEEE 754.Ma sto faticando se dovessi cambiarlo per evitare il confronto dell'uguaglianza in virgola mobile:
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';
}
}
Da un lato, il codice originale è più semplice e diretto a me. Ma c'è una cosa che sto considerando: i == STANDARD_LINE induce in errore i compagni di squadra junior? Nasconde il fatto che i numeri in virgola mobile possono avere errori di arrotondamento? Dopo aver letto i commenti di questo post:
sembra che ci siano molti sviluppatori che non sanno che alcuni numeri float sono esatti. Dovrei evitare confronti tra uguaglianza di numeri float anche se è valido nel mio caso? O sto pensando troppo a questo?