0

Tengo un problema con decimales, quiero comprobar cuantos 0.01 existen en mi variable paso un valor 2.01 pero aparece 2.00999 y cuando le resto el dos no alcanza al 0.01 entonces no puedo saber si existe esa décima o no, como solucionaría ese problema? se me ocurre dividir por 0.00999 pero no creo que sea la mejor forma.

float cambio = 0; int cantidad = 0;
std::cin>>cambio; // ingreso 2.01 pero obtiene 2.00999 (un numero periódico)
cambio -= cantidad*2; // aquí elimino el dos
cantidad = cambio/0.01; // pero al ser 0.009 (un numero periódico) no alcanza a ser dividido por 0.01

edito: lo he solucionado de la siguiente forma pero no creo que sea correcto lo que estoy haciendo.

cantidad = (int)((cantidad*1000)/9);
larous25
  • 607
  • 7
  • 18
  • Te sugiero colocar el fragmento de código que presenta problema y así algún usuario pueda evaluar el codigo y obtengas una respuesta. – Jhoubert Rincon Oct 17 '19 at 16:44
  • Podría ser un problema de precisión, que tipo de variables son cambio y cantidad.? – Jhoubert Rincon Oct 17 '19 at 17:02
  • 2
    Los números flotantes tienen problema de precisión señalado en el estandar IEEE 754 : https://es.wikipedia.org/wiki/IEEE_coma_flotante –  Oct 17 '19 at 17:02

0 Answers0