ciao Emilio,
questa volta il valore non’ è importato o preso chissà da quale calcolo o lunghezza di geometria
imposto un valore 0.0 incremento di 0.001 se arriva a 0.100 condizione True esegui codice
non lo so ma all’epoca che iniziai a fare i primi codici anni fa non ricordo queste problematiche
mah forse dipende che sto usando python in Gh, anche se i parametri essendo specifici non dovrebbe.
grazie per la conferma, cerco di trovare i suggerimenti dei vecchi post nel caso ti disturbo un pò
Non e’ questione di errori nel valore iniziale.
E’ un limite intrinseco dei numeri floating point usati dai computer.
Certi valori (decimali) non possono essere rappresentati esattamente (in binario).
Se vuoi prova questo e vedi cosa scrive.
e = 0.0
while e <= 0.100:
# print e
e += 0.001
print 'E = %.16f' % e
if e == 0.099: print "ok"
print '0.099 = %.16f' % 0.099
Emilio ho provato, l’ho avevo capito il senso, ricordo tutte le risposte datemi da tutti voi sul fatto di tutte le cifre decimali che ci sono nei valori e sono diversi soprattutto in Gh dove chi ne usa 12 chi 16 etc
non credevo che anche se impostavo io i valori avrei riscontrato lo stesso problema
quindi anche un semplice incremento si deve confrontare con questa “conversione” decimali/binario
ora che ci penso bene, i decimali non ho avuto “credo quasi mai” la necessità di usarli (per fortuna)
usando anche round il risultato non mi cambia, alla fine sempre per il discorso di approssimazione
credo che sono obbligato ad usare al posto di uguale, l’operatore maggiore in questo modo funziona.
Certo.
La ‘regola’ quando usi i valori floating point e’: se due valori non sono interi, e’ meglio non verificare se siano uguali o diversi, ma piuttosto usare gli altri confronti cioe’ in Python usare < , > , >= e <= , ma non == o !=.
eeee Emilio, appunto come edit nel primo post che avevo provato
oppure anche avevo cambiato il valore per il confronto ed in certi casi == funziona
quindi come ribadivi, la conversione in binario certevolte non tornano numeri precisi
un’altra regola che non conoscevo, e che ho dovuto imparare facendo esperienza