Formatos de float

20/12/2006 - 17:09 por ANT1 | Informe spam
Hola a todos de nuevo.

Sigo con mi aplicacion windows encargada de gestionar una base de
datos.

Ahora mismo estaba tratando de crear un motor de busqueda para dicha
base de datos y me ha surgido esta duda:

Para un campo float que tengo en la base de datos, si deseo almacenar
el valor correctamente, en el textbox que tengo donde escribir el valor
y todo eso he de poner le valor de los decimales con una coma, por
ejemplo "10,5".

En cambio a la hora de realizar una busqueda, en el textbox que tengo
que utilizar para indicar el valor a buscar, si quiero que me lo acepte
como una busqueda he de poner el valor decimal con un punto, con el
ejemplo anterior ahora seria "10.5".

¿Alguien sabe porque es esto?¿Hay alguna forma de indicar el formato
de esritura del float en el textbox o en un datagridview?¿tal vez con
la cultura?

Gracias a todos. Este es uno de los pocos foros donde la gente
realmente se moja y ayuda a los demas.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
20/12/2006 - 22:28 | Informe spam
"ANT1" wrote in message
news:
¿Hay alguna forma de indicar el formato
de esritura del float en el textbox o en un datagridview?
¿tal vez con la cultura?



Efectivamente, el formato lo saca del
Thread.CurrentThread.CurrentCulture. Al CurrentCulture le puedes asignar un
CultureInfo, y el CultureInfo tiene un NumberFormatInfo que indica el
formato al que se convierten los números de forma predeterminada. Si
quieres, también puedes indicar el formato manualmente al hacer la
conversión, apoyándote en la sobrecarga del String.Format o de
float.ToString que recibe un parámetro de tipo IFormatProvider.
Respuesta Responder a este mensaje
#2 otif11
21/12/2006 - 12:56 | Informe spam
Yo que tú no usaría FLOAT pues son inexactos, es preferible usar
decimal, tanto en base de datos como en aplicación, con float se
pierde presición y si los quieres redondear peor aún. Es debido a un
bug en .net

Phito
Venezuela

ANT1 ha escrito:

Hola a todos de nuevo.

Sigo con mi aplicacion windows encargada de gestionar una base de
datos.

Ahora mismo estaba tratando de crear un motor de busqueda para dicha
base de datos y me ha surgido esta duda:

Para un campo float que tengo en la base de datos, si deseo almacenar
el valor correctamente, en el textbox que tengo donde escribir el valor
y todo eso he de poner le valor de los decimales con una coma, por
ejemplo "10,5".

En cambio a la hora de realizar una busqueda, en el textbox que tengo
que utilizar para indicar el valor a buscar, si quiero que me lo acepte
como una busqueda he de poner el valor decimal con un punto, con el
ejemplo anterior ahora seria "10.5".

¿Alguien sabe porque es esto?¿Hay alguna forma de indicar el formato
de esritura del float en el textbox o en un datagridview?¿tal vez con
la cultura?

Gracias a todos. Este es uno de los pocos foros donde la gente
realmente se moja y ayuda a los demas.
Respuesta Responder a este mensaje
#3 ANT1
22/12/2006 - 09:44 | Informe spam
Aún no he probado a poner la cultura a los textbox y demás. Cuando lo
pruebe ya les diré a ver que tal me fue y para que otros que les sirva
puedan usarlo.

Primero agradecer que contestaseis a los dos. Ando apurado de tiempo y
cualquier ayuda me viene muy bien.

Pero me interesa el comentario de otif11. ¿Que bugs has encontrado tu
con los float? y si puedes ¿que diferencias hay entre decimal y float?

Gracias otra vez

On 21 dic, 12:56, "" wrote:
Yo que tú no usaría FLOAT pues son inexactos, es preferible usar
decimal, tanto en base de datos como en aplicación, con float se
pierde presición y si los quieres redondear peor aún. Es debido a un
bug en .net

Phito
Venezuela

ANT1 ha escrito:

> Hola a todos de nuevo.

> Sigo con mi aplicacion windows encargada de gestionar una base de
> datos.

> Ahora mismo estaba tratando de crear un motor de busqueda para dicha
> base de datos y me ha surgido esta duda:

> Para un campo float que tengo en la base de datos, si deseo almacenar
> el valor correctamente, en el textbox que tengo donde escribir el valor
> y todo eso he de poner le valor de los decimales con una coma, por
> ejemplo "10,5".

> En cambio a la hora de realizar una busqueda, en el textbox que tengo
> que utilizar para indicar el valor a buscar, si quiero que me lo acepte
> como una busqueda he de poner el valor decimal con un punto, con el
> ejemplo anterior ahora seria "10.5".

> ¿Alguien sabe porque es esto?¿Hay alguna forma de indicar el formato
> de esritura del float en el textbox o en un datagridview?¿tal vez con
> la cultura?

> Gracias a todos. Este es uno de los pocos foros donde la gente
> realmente se moja y ayuda a los demas.
Respuesta Responder a este mensaje
#4 Hernan
22/12/2006 - 12:04 | Informe spam
Aún no he probado a poner la cultura a los textbox y demás. Cuando lo
pruebe ya les diré a ver que tal me fue y para que otros que les sirva
puedan usarlo.



¿Es una página web o un winform? En una aplicación winform deberías
usar el formato de la cultura corriente porque se supone que es lo que
el usuario ha especificado en el sistema operativo.

Lo que no dices es en qué se diferencia la búsqueda de la
modificación.

Pero me interesa el comentario de otif11. ¿Que bugs has encontrado tu
con los float? ...



No hay ningún bug (al menos que yo conozca). Los double y float
funcionan
así. Es la limitación que tienen por intentar representar una
cantidad infinita
de números (hay infinitos números reales entre cualquier par de
ellos)
con una cantidad finita de bits.

En la práctica, si quieres representar dinero o algo relativo al mismo
porque
estás desarrollando una aplicación financiera o contable, usa el tipo
decimal.
Si lo que intentas representar es otra cosa, por ejemplo temperaturas
en tu
aplicación para demostrar el calentamiento global de la tierra, puedes
seguir tranquilamente con los double.

... y si puedes ¿que diferencias hay entre decimal y float?



Hay bastante literatura al respecto en la web. El problema llega hasta
los
inicios de la computación. Cuando los programadores se preguntaban
¿qué uso? ¿COBOL o FORTRAN? en realidad estaban preguntándose
si el problema se puede computar con decimal o doubles.

Puedes empezar por aquí:
http://es.wikipedia.org/wiki/IEEE_punto_flotante

Gracias otra vez

On 21 dic, 12:56, "" wrote:

> Yo que tú no usaría FLOAT pues son inexactos, es preferible usar
> decimal, tanto en base de datos como en aplicación, con float se
> pierde presición y si los quieres redondear peor aún. Es debido a un
> bug en .net

> Phito
> Venezuela

> ANT1 ha escrito:

> > Hola a todos de nuevo.

> > Sigo con mi aplicacion windows encargada de gestionar una base de
> > datos.

> > Ahora mismo estaba tratando de crear un motor de busqueda para dicha
> > base de datos y me ha surgido esta duda:

> > Para un campo float que tengo en la base de datos, si deseo almacenar
> > el valor correctamente, en el textbox que tengo donde escribir el valor
> > y todo eso he de poner le valor de los decimales con una coma, por
> > ejemplo "10,5".

> > En cambio a la hora de realizar una busqueda, en el textbox que tengo
> > que utilizar para indicar el valor a buscar, si quiero que me lo acepte
> > como una busqueda he de poner el valor decimal con un punto, con el
> > ejemplo anterior ahora seria "10.5".

> > ¿Alguien sabe porque es esto?¿Hay alguna forma de indicar el formato
> > de esritura del float en el textbox o en un datagridview?¿tal vez con
> > la cultura?

> > Gracias a todos. Este es uno de los pocos foros donde la gente
> > realmente se moja y ayuda a los demas.
Respuesta Responder a este mensaje
#5 ANT1
26/12/2006 - 09:26 | Informe spam
Gracias Hernan.

Acabo de volver de las fiestas (por cierto felices fiestas par todos) y
me estoy poniendo con lo que me has pasado.

El programa que estoy haciendo es para una aplicacion windows. Una
aplicacion de facturacion.

Yo tengo todas las culturas de los distintos elementos de mi app a la
cultura por defecto. Como tu dices, para que el usuario escoja.

El problema aparece cuando hago una busqueda en la base de datos.
Utilizo postgresql y lo manejo mediante Active Record, de Castle
Proyect. Al hacer la busqueda HQL (el SQL de NHibernate) me imagino que
esta no acepte mas que la cultura definida para la base de datos o NH y
sea la americana, con los decimales separados por punto y claro, queda
un poco raro que paa añadir datos a la base de datos si que se pueda
utilizar la coma para separar los dcimales y en cambio para la busqueda
te obligue a usar el punto.

Por ello he llegado a la conclusion que no es un problem ade culturas
propiamente dicho de los textbox. Deberia de hacer alguna cosa para que
el usuaior al escribir en el textbx el numero, por ejemplo, "11,3" a la
hora de generar el codigo de busqueda sea "11.3".


Hernan ha escrito:

> Aún no he probado a poner la cultura a los textbox y demás. Cuando lo
> pruebe ya les diré a ver que tal me fue y para que otros que les sirva
> puedan usarlo.

¿Es una página web o un winform? En una aplicación winform deberías
usar el formato de la cultura corriente porque se supone que es lo que
el usuario ha especificado en el sistema operativo.

Lo que no dices es en qué se diferencia la búsqueda de la
modificación.

> Pero me interesa el comentario de otif11. ¿Que bugs has encontrado tu
> con los float? ...

No hay ningún bug (al menos que yo conozca). Los double y float
funcionan
así. Es la limitación que tienen por intentar representar una
cantidad infinita
de números (hay infinitos números reales entre cualquier par de
ellos)
con una cantidad finita de bits.

En la práctica, si quieres representar dinero o algo relativo al mismo
porque
estás desarrollando una aplicación financiera o contable, usa el tipo
decimal.
Si lo que intentas representar es otra cosa, por ejemplo temperaturas
en tu
aplicación para demostrar el calentamiento global de la tierra, puedes
seguir tranquilamente con los double.

> ... y si puedes ¿que diferencias hay entre decimal y float?

Hay bastante literatura al respecto en la web. El problema llega hasta
los
inicios de la computación. Cuando los programadores se preguntaban
¿qué uso? ¿COBOL o FORTRAN? en realidad estaban preguntándose
si el problema se puede computar con decimal o doubles.

Puedes empezar por aquí:
http://es.wikipedia.org/wiki/IEEE_punto_flotante

> Gracias otra vez
>
> On 21 dic, 12:56, "" wrote:
>
> > Yo que tú no usaría FLOAT pues son inexactos, es preferible usar
> > decimal, tanto en base de datos como en aplicación, con float se
> > pierde presición y si los quieres redondear peor aún. Es debido a un
> > bug en .net
>
> > Phito
> > Venezuela
>
> > ANT1 ha escrito:
>
> > > Hola a todos de nuevo.
>
> > > Sigo con mi aplicacion windows encargada de gestionar una base de
> > > datos.
>
> > > Ahora mismo estaba tratando de crear un motor de busqueda para dicha
> > > base de datos y me ha surgido esta duda:
>
> > > Para un campo float que tengo en la base de datos, si deseo almacenar
> > > el valor correctamente, en el textbox que tengo donde escribir el valor
> > > y todo eso he de poner le valor de los decimales con una coma, por
> > > ejemplo "10,5".
>
> > > En cambio a la hora de realizar una busqueda, en el textbox que tengo
> > > que utilizar para indicar el valor a buscar, si quiero que me lo acepte
> > > como una busqueda he de poner el valor decimal con un punto, con el
> > > ejemplo anterior ahora seria "10.5".
>
> > > ¿Alguien sabe porque es esto?¿Hay alguna forma de indicar el formato
> > > de esritura del float en el textbox o en un datagridview?¿tal vez con
> > > la cultura?
>
> > > Gracias a todos. Este es uno de los pocos foros donde la gente
> > > realmente se moja y ayuda a los demas.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida