🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: chile.comp.programacion
3 messages
3 total messages Started by Pintamono Fri, 07 Mar 2008 12:41
Manejo de decimales c# sql
#534
Author: Pintamono
Date: Fri, 07 Mar 2008 12:41
36 lines
2239 bytes
que tal, tengo una duda respecto del manejo de decimales a nivel de c# y 
de sql...

resulta que tenemos un sistema que ha estado funcionando a la prefeccion 
durante los ultimos 2 a�os, ahora gente externa ha creado una aplicacion 
que ingresa datos a la misma BD de nuestro sistema.

El problema es que ellos ingresa un valor, por ejemplo "2.5" y en la BD 
se guarda como "5.1999998926".

Revisando nuestro sistema me doy cuenta que efectivamente se guarda asi 
el valor que ingresamos nosotros, ejemplo ingresamos "2.654" y en la BD 
se guarda "2.6539999999999999" cuando se procesa esto en nuestro codigo 
se toma de la siguiente manera:

double Precio = Convert.ToDouble(txtPrecio.Text);

luego eso se pasa por procedimiento almacenado a la BD y seg�n el 
profiler de sql llega asi: "2.654000000000000e+000"

cuando lo recupero lo hago de la siguiente forma
if(mRow["Precio"]!=DBNull.Value)mPrecio=Convert.ToDouble(mRow["Precio"]);

y lo despliego as�:

txtPrecio.Text = mPrecio.ToString();

Esto ha funcionado, como dije anteriormente, por dos a�os y sin ningun 
problema.

Mi duda es, esto es correcto? nuestro sistema esta mal? o es que el 
"nuevo" sistema es el que no esta haciendo la conversion como 
corresponde?, acaso hay que configurar algo para que tome esto como 
corresponde?

Gracias.
Re: Manejo de decimales c# sql
#535
Author: araguayo
Date: Fri, 07 Mar 2008 14:52
46 lines
2547 bytes
http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems

Pintamono <Pintamono@nomandeweas.kk> wrote:
: que tal, tengo una duda respecto del manejo de decimales a nivel de c# y 
: de sql...

: resulta que tenemos un sistema que ha estado funcionando a la prefeccion 
: durante los ultimos 2 a?os, ahora gente externa ha creado una aplicacion 
: que ingresa datos a la misma BD de nuestro sistema.

: El problema es que ellos ingresa un valor, por ejemplo "2.5" y en la BD 
: se guarda como "5.1999998926".

: Revisando nuestro sistema me doy cuenta que efectivamente se guarda asi 
: el valor que ingresamos nosotros, ejemplo ingresamos "2.654" y en la BD 
: se guarda "2.6539999999999999" cuando se procesa esto en nuestro codigo 
: se toma de la siguiente manera:

: double Precio = Convert.ToDouble(txtPrecio.Text);

: luego eso se pasa por procedimiento almacenado a la BD y seg?n el 
: profiler de sql llega asi: "2.654000000000000e+000"

: cuando lo recupero lo hago de la siguiente forma
: if(mRow["Precio"]!=DBNull.Value)mPrecio=Convert.ToDouble(mRow["Precio"]);

: y lo despliego as?:

: txtPrecio.Text = mPrecio.ToString();

: Esto ha funcionado, como dije anteriormente, por dos a?os y sin ningun 
: problema.

: Mi duda es, esto es correcto? nuestro sistema esta mal? o es que el 
: "nuevo" sistema es el que no esta haciendo la conversion como 
: corresponde?, acaso hay que configurar algo para que tome esto como 
: corresponde?

: Gracias.

-- 
----
Ariel Aguayo B. (araguayo@dcc.uchile.cl)

"Vale la pena morir por todo aquello sin lo cual no vale la pena vivir..."
Salvador Allende.
Re: Manejo de decimales c# sql
#536
Author: Pintamono
Date: Fri, 07 Mar 2008 17:53
47 lines
2719 bytes
Gracias por el link, esta interesante...


araguayo@dcc.uchile.cl escribi�:
> http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems
> 
> Pintamono <Pintamono@nomandeweas.kk> wrote:
> : que tal, tengo una duda respecto del manejo de decimales a nivel de c# y 
> : de sql...
> 
> : resulta que tenemos un sistema que ha estado funcionando a la prefeccion 
> : durante los ultimos 2 a?os, ahora gente externa ha creado una aplicacion 
> : que ingresa datos a la misma BD de nuestro sistema.
> 
> : El problema es que ellos 


ingresa un valor, por ejemplo "2.5" y en la BD
> : se guarda como "5.1999998926".
> 
> : Revisando nuestro sistema me doy cuenta que efectivamente se guarda asi 
> : el valor que ingresamos nosotros, ejemplo ingresamos "2.654" y en la BD 
> : se guarda "2.6539999999999999" cuando se procesa esto en nuestro codigo 
> : se toma de la siguiente manera:
> 
> : double Precio = Convert.ToDouble(txtPrecio.Text);
> 
> : luego eso se pasa por procedimiento almacenado a la BD y seg?n el 
> : profiler de sql llega asi: "2.654000000000000e+000"
> 
> : cuando lo recupero lo hago de la siguiente forma
> : if(mRow["Precio"]!=DBNull.Value)mPrecio=Convert.ToDouble(mRow["Precio"]);
> 
> : y lo despliego as?:
> 
> : txtPrecio.Text = mPrecio.ToString();
> 
> : Esto ha funcionado, como dije anteriormente, por dos a?os y sin ningun 
> : problema.
> 
> : Mi duda es, esto es correcto? nuestro sistema esta mal? o es que el 
> : "nuevo" sistema es el que no esta haciendo la conversion como 
> : corresponde?, acaso hay que configurar algo para que tome esto como 
> : corresponde?
> 
> : Gracias.
> 
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads