Thread View: chile.comp.programacion
3 messages
3 total messages
Started by Pintamono
Fri, 07 Mar 2008 12:41
Manejo de decimales c# sql
Author: Pintamono
Date: Fri, 07 Mar 2008 12:41
Date: Fri, 07 Mar 2008 12:41
36 lines
2239 bytes
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
Author: araguayo
Date: Fri, 07 Mar 2008 14:52
Date: Fri, 07 Mar 2008 14:52
46 lines
2547 bytes
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
Author: Pintamono
Date: Fri, 07 Mar 2008 17:53
Date: Fri, 07 Mar 2008 17:53
47 lines
2719 bytes
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