Domanda

Esistono in Ruby alcune funzionalità / sintassi per confrontare due float con delta? Qualcosa di simile a assert_in_delta (expected_float, actual_float, delta) da test / unit ma che restituisce booleano?

È stato utile?

Soluzione

(expected_float - actual_float).abs <= delta

Altri suggerimenti

A seconda dell'applicazione e dei valori in virgola mobile effettivamente rappresentati, potrebbe avere senso convertirli in Rationals con una determinata precisione. Quindi i confronti diretti si comporteranno sempre correttamente poiché le Razionali sono solo due numeri interi.

Ad esempio, se sai che hai a che fare con importi in valuta statunitensi, memorizzarli come amount.to_r.round (2) consente confronti esatti per l'uguaglianza.

Solo un pensiero ... non tutti i valori non interi devono essere float rappresentati in modo inesatto

potresti anche aver bisogno di un calcolo relativo di tolleranza / delta

http://realtimecollisiondetection.net/blog/?p=89

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top