Confronto di duplicati [duplicato]

0

Ho bisogno di confrontarmi con doppie variabili come questa

if (distance <= radius)

sia la distanza che il raggio sono doppi e ricordo in classe come usare i confronti epsilon per controllare l'uguaglianza, ma come lo farei per < = o >?

    
posta user3347937 30.09.2014 - 20:30
fonte

2 risposte

4

Un epsilon non è rilevante quando si controlla quale valore in virgola mobile è più grande. È necessario solo per l'uguaglianza, dove (a causa di problemi di precisione) la tua matematica può creare due valori che dovrebbero essere uguali, ma leggermente off.

    
risposta data 30.09.2014 - 20:35
fonte
2

Dipende dalla tua definizione di "<=".

Se vuoi dichiararli uguali se si trovano a una certa distanza l'uno dall'altro, allora dovresti fare:

if ((a < (b+epsilon)) do_whatever();

Questo è controintuitivo, poiché accetterebbe un > b di meno di epsilon, che probabilmente non è quello che vuoi. Ma potrebbe essere.

In generale, parlare di uguaglianza a virgola mobile (che include il doppio) non ha senso.

    
risposta data 30.09.2014 - 20:50
fonte

Leggi altre domande sui tag