Matemáticas con Doubles.

21/07/2003 - 12:20 por Jose Carlos | Informe spam
Estoy sumamente extrañado, y no se si será por algun mal uso que hago al
operar.

double restaAux = 4199059.27 - 4191043.27;

y el resultado es 8015.9999999995343 en vez de 8016.

Que ocurre? los double no operan con precisión? Se debe operar de otra
manera. Gracias.

Jose Carlos.

PD: Pudiera parecer este error cuantitativamente insignificante, pero
cualitativamente es importante, pues a veces lo importante es saber si el
resultado es entero o no. Y en este caso engaña.

Preguntas similare

Leer las respuestas

#6 Jose Carlos
22/07/2003 - 19:14 | Informe spam
Gracias. Sigo mirando soluciones, ya os comentaré.

"Octavio Hernández" escribió en el mensaje
news:
Jose Carlos,

Es por su propia definición. El tipo Decimal en principio está pensado


para
cálculos financieros que requieren precisión absoluta (bueno, casi - 28
dígitos decimales). Por lo que decía Tristán de la no exactitud de las
conversiones binario-decimal, el número se representa directamente en
decimal y las operaciones se hacen directamente sobre esa representación.
Puedes ver los detalles de la representación interna aquí:




http://msdn.microsoft.com/library/d...stopic.asp

Salu2,

Octavio

"Jose Carlos" escribió en el mensaje
news:
> Ok. Gracias. Con decimal todo, funciona bien. Pero operar con decimal si
> embargo es muchisimo más lento.
>
>
> Para no perder velocidad creo que lo mejor es;
> si se puede conocer el orden de las precisiones a tratar, creo que lo
mejor
> es trabajar multiplicando por el orden de precisión a trabajar y operar
con
> enetros. Luego ya se dividirá.
>
> Porque va el décimal mucho más lento?. por su prpia definición.?
>
> Jose Carlos.
>
> "tristan" escribió en el mensaje
> news:07bc01c34f7f$98aecfa0$
> Aparte de lo que te han dicho ya, ten en cuenta que
> Double es un tipo de coma flotante. Estos números se
> representan y operan en binario. El problema lo tienes en
> la conversión de decimal a binario. Un número
> representable de forma exacta en decimal, no tiene por
> que serlo en binario y viceversa.
>
> Si necesitas precisión decimal, utiliza el tipo decimal.
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida