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 >?
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 >?
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.
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.
Leggi altre domande sui tag c++11 comparison