![]() |
Error Incomprensible
Buenas tardes foreros.
No se si esta pregunta va bien akí Les cuento mi problema Tengo una tabla en Memoria (TRxMemoryData) con varios campos, en concreto 2 de ellos son Debe y Haber (son de tipo TIBBCDField), el caso es que hago lo siguiente:
Tengo ese código, para el ejemplo que les pongo el while lo recorre 3 veces: 1ª vuelta --> Debe = 553,11 --> Haber = 0 --> Importe = 553,11 2ª vuelta --> Debe = 0 --> Haber = 36,19 --> Importe = 516,92 3ª vuelta --> Debe = 0 --> Haber = 516,92 --> Importe = 5,6843418861e-14 A qué se debe que no me salga 0? Les agradecería cualquier ayuda. Gracias |
¡Hombre! 5,6843418861e-14 es muuuuy cercano a cero, ¿qué no? Seguramente nadie se preocupará por esas diferencias monetarias.
Pero bueno, lo que pasa es que los float no son precisos debido a la representación interna (binaria) en la computadora. En muchas situaciones, el nivel de precisión es tan alto que las diferencias son despreciables. No obstante, me parece que para cuestiones monetarias es mejor usar el tipo Currency (*). (*) Lo cual no deja de ser curioso: podemos vivir con errar en 0.00000001 metros el punto de aterrizaje de una nave espacial, pero desde luego no nos perdonarán 0.00000001 céntimos que debamos. :) // Saludos |
Muchas gracias Roman.
Voy a probarlo y te cuento. |
Me ha funcionado correctamente.
Me aconsejas que las variables las declare de tipo Currency en vez de Extended-Real - etc? El tipo Currency va bien con el tema de los decimales? Te lo pregunto porque ese pedazo de código anterior es para una contabilidad. Gracias, espero tu respuesta. |
Cita:
Cita:
|
Gracias Roman.
Doy por concluído el Hilo. |
La franja horaria es GMT +2. Ahora son las 12:47:42. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi