Pergunta

Existe em Ruby alguma funcionalidade/sintaxe para comparar dois carros alegóricos com a Delta? Algo semelhante a assert_in_delta (esperado_float, real_float, delta) a partir de teste/unidade Mas retornando booleano?

Foi útil?

Solução

(expected_float - actual_float).abs <= delta

Outras dicas

Dependendo do seu aplicativo e do que seus valores de ponto flutuante estão realmente representando, pode fazer sentido convertê -los em racionais com uma determinada precisão. Em seguida, as comparações diretas sempre se comportarão corretamente, pois as racionais são apenas dois números inteiros.

Por exemplo, se você sabe que está lidando conosco valores da moeda, armazenando -os como amount.to_r.round(2) permite comparações exatas para a igualdade.

Apenas um pensamento ... nem todos os valores que não são inteiros precisam ser falantes de carros alegóricos inexacentemente representados

Você também pode precisar de um cálculo relativo de tolerância / delta

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top