Foxpro no almacena Números con notación científica negativa 1e-16 en un campo double

145 views
Skip to first unread message

josé antonio contreras gonzález

unread,
Sep 14, 2016, 10:36:02 AM9/14/16
to Comunidad de Visual Foxpro en Español
Saludos compañeros

Anteriormente realice una consulta acerca de la obtención de números en notación científica y me ayudaron a resolver la duda

pero, me falto incluir la pregunta de como almacenar esos números en una tabla.

Mi problema es el siguiente:

Tengo una serie de números como los siguientes 1e-16, 3e-19, etc. 

Al intentar almacenarlos en un campo double, solo almacena ceros

el numero 1e-15 y menores como 1e-14, 1e-10, si los almacena, pero convertidos a su versión con decimal, no en su versión científica

pero más allá de E-16, ya no los convierte a decimales y solo almacena ceros.

¿Sera un error de la forma de trabajar de Foxpro que ya no puede ser corregida? o es simplemente que no he configurado bien los DECIMALS o alguna configuración importante.

Gracias de antemano por la ayuda que pudieran aportar!


Germán Fabricio Valdez

unread,
Sep 14, 2016, 11:41:20 AM9/14/16
to Comunidad de Visual Foxpro en Español
encontre este mensaje en la ayuda de vfoxpro 9 sp2

NoteNote

Visual FoxPro contains a limit of 16 digits of precision in numeric calculations. For more information about numeric precision in Visual FoxPro, see Visual FoxPro System Capacities.

Germán Fabricio Valdez

unread,
Sep 14, 2016, 11:44:19 AM9/14/16
to Comunidad de Visual Foxpro en Español
y de sql server enconter esto
In SQL Server, the default maximum precision of numeric and decimal data types is 38. In earlier versions of SQL Server, the default maximum is 28.

josé antonio contreras gonzález

unread,
Sep 14, 2016, 11:49:14 AM9/14/16
to Comunidad de Visual Foxpro en Español
Saludos Germán

Yo opino que tienes razón, después de publicar mi pregunta he ido perdiendo las esperanzas de que esto vaya a funcionar, de hecho encontré una página de Microsoft
"Cómo utilizar UDF() para modificar el formato de notación científica predeterminado" https://support.microsoft.com/es-mx/kb/148784

que señala que los numeros iguales o inferiores a 1e-16 arrojaran como resultado CERO.

¿eso que?

y eso a pesar que la definición del Tipo Double dice maravillas como que almacena numero desde +/-4.94065645841247E-324 to +/-8.9884656743115E307

lo cual al parecer no es cierto, porque después de E-16 ya no da mas que ceros.

Parece que esto no va a llevar a ningún lado, a lo mejor, es mejor almacenar el resultado en STRING y listo.

francisco prieto

unread,
Sep 14, 2016, 12:38:17 PM9/14/16
to Comunidad de Visual Foxpro en Español
Jose,

Si tan solo es por almacenar mira este link


Saludos,

Pancho
Córdoba
Argentina

josé antonio contreras gonzález

unread,
Sep 14, 2016, 3:51:31 PM9/14/16
to Comunidad de Visual Foxpro en Español
Saludos Francisco

Ya había visto ese post, y de ahí es donde concluyo que el limite para un numero con muchos decimales es 1e-16, donde forpro ya no lo tolera o algo así y después ya solo regresa cero en el contenido del campo claro.

pero tienes razón, para almacenarlo y trabajarlo hay otras opciones para evitar seguir por esta via que parece que no conduce a ningún lado.




El miércoles, 14 de septiembre de 2016, 11:38:17 (UTC-5), francisco prieto escribió:
Jose,

Si tan solo es por almacenar mira este link


Saludos,

Pancho
Córdoba
Argentina

Víctor Hugo Espínola Domínguez

unread,
Sep 14, 2016, 6:05:28 PM9/14/16
to publice...@googlegroups.com
Cómo está definido el campo y que motor usas?

Saludos,
Víctor.
Lambaré - Paraguay.

Víctor Hugo Espínola Domínguez

unread,
Sep 14, 2016, 7:17:42 PM9/14/16
to publice...@googlegroups.com
>pero más allá de E-16, ya no los convierte a decimales y solo almacena ceros.

Hay unos bugs en el browse de la tabla, pero sí almacena correctamente. Haz la prueba haciendo algunas operaciones aritméticas con los campos y podrás comprobarlo.

Lo que no tiene solución es la cantidad de dígitos en la precisión (16)
Imagen integrada 1

Saludos,
Víctor.
Lambaré - Paraguay.


El 14 de septiembre de 2016, 10:36, josé antonio contreras gonzález<joseantonio.con...@gmail.com> escribió:

josé antonio contreras gonzález

unread,
Sep 15, 2016, 10:45:57 AM9/15/16
to Comunidad de Visual Foxpro en Español
Saludos Víctor!

Fíjate que no me he fijado en lo que dices que es el Browse el que no muestra nada, pero que el dato si se almacena de la manera correcta. hoy lo verifico.

Estoy trabajando con Visual Foxpro 9 SP1

El campo lo defino como DOUBLE

Gracias por contestar.


El miércoles, 14 de septiembre de 2016, 18:17:42 (UTC-5), Víctor Hugo Espínola Domínguez escribió:
>pero más allá de E-16, ya no los convierte a decimales y solo almacena ceros.

Hay unos bugs en el browse de la tabla, pero sí almacena correctamente. Haz la prueba haciendo algunas operaciones aritméticas con los campos y podrás comprobarlo.

Lo que no tiene solución es la cantidad de dígitos en la precisión (16)
Imagen integrada 1

Saludos,
Víctor.
Lambaré - Paraguay.


Víctor Hugo Espínola Domínguez

unread,
Sep 15, 2016, 12:16:49 PM9/15/16
to publice...@googlegroups.com
El campo debe ser DOUBLE y con 18 decimales

Saludos,
Víctor.
Lambaré - Paraguay.


josé antonio contreras gonzález

unread,
Sep 19, 2016, 9:52:49 AM9/19/16
to Comunidad de Visual Foxpro en Español
Tienes razón Hugo, después de seguir el dato con el debug, comprobé que es verdad que aun cuando el valor 1e-19 se ve como un cero en el BROWSE, de verdad esta siendo almacenado como 1e-19, siempre y cuando, como dices, este número se almacene en un campo Double.

Gracias por la ayuda que proporcionaste




El jueves, 15 de septiembre de 2016, 11:16:49 (UTC-5), Víctor Hugo Espínola Domínguez escribió:
El campo debe ser DOUBLE y con 18 decimales

Saludos,
Víctor.
Lambaré - Paraguay.


Víctor Hugo Espínola Domínguez

unread,
Sep 19, 2016, 3:59:15 PM9/19/16
to publice...@googlegroups.com
👍

Saludos,
Víctor.
Lambaré - Paraguay.


Reply all
Reply to author
Forward
0 new messages