calculo float
|
|
Opa, sei que nao eh culpa do Ruby, pois toda linguagem tem este problema devido ao modo como o float funciona. Mas gostaria de saber qual a maneira correta. Estou fazendo um sistema financeiro e preciso saber como comparar valores com arredondamento de casas decimais, exemplo: Como faço para comparar os valores e indicar qual a tolerância que preciso, no caso de duas casas decimais por se tratar de moeda. Pensando em modo Ruby, poderia ter algo assim: total = (total * 100).round Alguma sugestão? |
|
|
Comparação de Floating Point é historicamente problemático, como você disse, por toda a área de computação. Portanto não se faz comparação de equivalência (==) entre floats. O que se faz é a diferença entre floats e daí você garante que ele está abaixo do nível de precisão que você precisa. Veja o assert_in_delta |

