Ver Mensaje Individual
  #2  
Antiguo 11-06-2010
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Reputación: 18
mcs Va por buen camino
Cita:
Empezado por vivamotos Ver Mensaje
Buenos días,

Tengo problemas graves con los float,

vereis si tengo el valor 7,636 almacenado en un float y lo quiero convertir a un float pero que me coga los dos primeros decimales,es decir, que quedase 7,63 SIN REDONDEAR como lo hago?????

Otra cosa, porque cuando una string tengo "7,63" y pongo StrToFloat(7,63) el valor que me devuelve es 7,63000000145!!!!

Como puedo solucionar estos casos?
La solución es muy "simple": no usar float. Lo que te ocurre es normal, y el problema es que no todos los numeros decimales tienen representación en un float o en un double. El 7,63 es uno de estos números, y no hay solución posible.

Deberías buscar otro tipo de datos que no sea de coma flotante. Es más, no se debería usar NUNCA los datos de coma flotante para operaciones que necesiten precisión de x decimales, y usar tipos de datos de coma fija.

En Java pasa exactamente lo mismo, y la solución que se da siempre es no usar variables float, y usar la clase BigDecimal (que es una p*tada, porque en Java no se pueden sobrecargar los operadores, y en vez de hacer a=a+b-c se hacen cosas tan bonitas como a.add(b).subtract(c)).
Responder Con Cita