Foros del Web » Programación para mayores de 30 ;) » .NET »

numeros decimales con punto

Estas en el tema de numeros decimales con punto en el foro de .NET en Foros del Web. hola! porque si hago operaciones con numeros decimales con un punto, me los pasa a entero? Osea lo hace así: 12.2 *2= 244 pero si ...

  #1 (permalink)  
Antiguo 25/01/2005, 14:33
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 21 años, 1 mes
Puntos: 156
Pregunta numeros decimales con punto

hola!

porque si hago operaciones con numeros decimales con un punto, me los pasa a entero? Osea lo hace así:

12.2 *2= 244

pero si pongo el número en coma, lo hace bien.

12,2 *2= 24,4

Yo quiero que se pueda utilizar el teclado numerico de la derecha, y ahí para poner el decimal sólo hay el punto.

Ya he intentado pasar los números a decimal o double, y nada de nada

Nosé si me explicado bien

saludos!
  #2 (permalink)  
Antiguo 25/01/2005, 14:56
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 9 meses
Puntos: 50
No se en donde te esté dando problemas porque lo hice tanto en console app como en win form y me está arrojando los valores correctamente.

tengo ésto:

double ix;
ix = 12.2 * 44;
MessageBox.Show(ix.ToString());

Y me imprime correctamente 536.8

Podrías darnos mas detalles de tu problema.

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 26/01/2005, 05:44
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 21 años, 1 mes
Puntos: 156
a mi el .NEt me debe tener manía, porque todo lo raro me pasa a mi

a ver pues tengo algo así:

Cita:
txtTotal.text=cDbl(txtCant.text) * cDbl(txtPrecio.text)

Y si en txtCant o en el txtPrecio, le pones un numero con punto, te lo pasa a entero. Sólo te hace bien las operaciones con la coma.

saludos!
  #4 (permalink)  
Antiguo 26/01/2005, 07:35
Avatar de RicaJ0625  
Fecha de Ingreso: noviembre-2004
Ubicación: La Chorrera, Panamá
Mensajes: 86
Antigüedad: 20 años
Puntos: 0
Escribe este codigo en el Page_Load y en modo de debug examina los valores
Cita:
Dim s As String = System.Threading.Thread.CurrentThread.CurrentCultu re.Name()
Dim x As Double = CDbl("12.2") * CDbl("2") ' x = 244.0

System.Threading.Thread.CurrentThread.CurrentCultu re = New Globalization.CultureInfo("es-PA")
Dim y As Double = CDbl("12.2") * CDbl("2") ' y = 24.4

System.Threading.Thread.CurrentThread.CurrentCultu re = New Globalization.CultureInfo(s)
Dim z As Double = CDbl("12.2") * CDbl("2") ' z = 244.0
Esto tiene que ver con el Culture de la página o con el regional setting que tiene la maquina. Esto sucede cuando se hacen conversiones. En este caso se esta convirtiendo de String a Double.

Y esto es porque el formato es: 123.456.789,00 como en el español de España (es-ES).

Nota no se porque esta incluyendo un espacio en la palabra CurrentCulture
Debes quitarlo

Última edición por RicaJ0625; 26/01/2005 a las 07:37
  #5 (permalink)  
Antiguo 26/01/2005, 07:49
Avatar de Rony J.  
Fecha de Ingreso: noviembre-2004
Ubicación: Maracay - Vzla
Mensajes: 223
Antigüedad: 20 años
Puntos: 0
Aunque en ocasiones puede que no sea lo mejor pero tambien puedes definir el idioma de tu aplicacion, de esta manera no se vera afectada por la configuracion regional de la maquina, para ello en el web.config dentro de la etiqueta Globalization colocas esto: culture="es-VE" uiCulture="es-VE"

Por supuesto, lo defines con el idioma que prefieras..
  #6 (permalink)  
Antiguo 26/01/2005, 09:54
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 21 años, 1 mes
Puntos: 156
mil disculpas porque no dije que se trataba de un Windows Form, pero supongo que este código del CurrentCulture tambien sirve para el windows form,no?

Y entonces debo poner ese código en todos los formularios? lo digo porque hay muchisimos.

gracias!
  #7 (permalink)  
Antiguo 14/02/2005, 05:19
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 21 años, 1 mes
Puntos: 156
hola de nuevo!

puse este código que me habiais dicho:

Cita:
System.Threading.Thread.CurrentThread.CurrentCultu re = New Globalization.CultureInfo("es-PA")
y vale, el formato de los numeros esta como yo quiero,osea los decimales con el punto. Pero resulta que me cambia el formato de la fecha y me la pone así:

mm/dd/aa
Hay alguna forma con cultureinfo de decirle que sólo quieres cambiar el formato de los números?

saludos!
  #8 (permalink)  
Antiguo 14/03/2005, 08:20
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 21 años, 1 mes
Puntos: 156
bueno, os dejo un enlace que he encontrado y está muy bien para tratar el CultureInfo:

http://www.microsoft.com/spanish/msd...ces/art116.asp
  #9 (permalink)  
Antiguo 15/03/2005, 23:17
 
Fecha de Ingreso: noviembre-2004
Mensajes: 48
Antigüedad: 20 años
Puntos: 0
Hola,
Lograste solucionar tu problema? te cuento que lei el articulo de microsoft pero no me sirve, yo no deseo modificar mi configuracion regional desde el S.O. solo deseo llamar a un procedimiento al inicio de mi aplicacion para que modifique la configuracion regional, y no quiero hacer esto cada vez que necesite cambiar el formato de mis decimales.
  #10 (permalink)  
Antiguo 16/03/2005, 04:34
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 21 años, 1 mes
Puntos: 156
yo también quería hacer esto que dices tu, de cambiarla al inicio de la aplicación, en vez de todo el rato. Y no lo he logrado, hasta que al final, he ido a la opción fea pero directa, cambiar la configuración regional de la máquina, de mientras busco la solución.

A ver si entre todos la encontramos!
  #11 (permalink)  
Antiguo 16/03/2005, 09:15
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 9 meses
Puntos: 50
De hecho si se puede hacer para cambiarle el formato a tus numeros en tiempo de ejecucion, es una pequeña clase que le indicas el formato, si se usará al punto como separador, o la coma, el problema es que no me acuerdo como se llama y eso me frusta..

Voy a darme un tiempo para buscarlo... y les paso la solucion.

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #12 (permalink)  
Antiguo 17/03/2005, 05:07
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 21 años, 1 mes
Puntos: 156
rootk siempre ahí dando solución a nuestros problemas. Eres nuestro salvador!!
  #13 (permalink)  
Antiguo 24/03/2005, 11:45
 
Fecha de Ingreso: noviembre-2004
Mensajes: 48
Antigüedad: 20 años
Puntos: 0
Por lo visto, nadie puede ayudarnos en esto.
  #14 (permalink)  
Antiguo 27/03/2005, 12:53
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 21 años, 1 mes
Puntos: 156
Rootk, encontraste la solución? :p

Yo había probado que cuando el usuario introduce numeros en la caja de texto, pues cuando escriba una coma, hacer un replace y ponerle un punto, o bien un format y decirle que ponga el punto....Pero eso me va fatal, me pone los números a su bola...

Aún estoy con la solución chunga, la de cambiar el formato de la máquina
  #15 (permalink)  
Antiguo 01/04/2005, 09:55
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 9 meses
Puntos: 50
Hola... ya no me acordaba de éste post...

Pero en fin., aqui les explico como cambiar el formato solo para los números...

Antes que nada quiero decirles que se le puede cambiar el formato de la maquina en tiempo de ejecucion pero afectaría en todos los formatos incluyendo el de la fecha.. pero si quieren hacerlo solo para numeros sería así: (voy a usas una cultura que utiliza la "," como separador y otra que utiliza el "."

Usando "," :

Cita:
Dim MyInt As Double = 100.23
Dim culture As CultureInfo = New CultureInfo("fr-FR")
Dim s As String = MyInt.ToString(culture)
Usando "." :

Cita:
Dim MyInt As Double = 100.23
Dim culture As CultureInfo = New CultureInfo("es-MX")
Dim s As String = MyInt.ToString(culture)

Y listo

Ahora que si lo quien cambiar para que afecte en toda la aplicacion, tendría que colocar ésto en el page load de su aplicacion:

Cita:
Thread.CurrentThread.CurrentCulture = New Globalization.CultureInfo("fr-FR")
P.D.- Pueden usar otra cultura dependiendo de lo que necesites... yo utilice fr.FR para efectos de ejemplo pero si quieren ver cual es que deben usar pueden ocupar el siguiente código para que les regrese los formatos de todas las culturas:

Cita:
Dim CI As CultureInfo
Dim s As String
For Each CI In _
CultureInfo.GetCultures(CultureTypes.SpecificCultu res)
s = CI.Name & Chr(10)
s &= CI.DisplayName & Chr(10)
s &= CI.NumberFormat.CurrencySymbol & Chr(10)
s &= CI.DateTimeFormat.ShortDatePattern & Chr(10)
s &= CI.NumberFormat.PercentDecimalSeparator
MessageBox.Show(s)
Next
Espero les funcione.. cualquier cosa por aqui andamos...
  #16 (permalink)  
Antiguo 01/04/2005, 12:11
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 21 años, 1 mes
Puntos: 156
muchas gracias por los ejemplos Rootk :)

A ver, una preguntita:

si pongo el siguiente código en el formulario principal de una aplicación WinForms, ya no te tendré que tocar nada más en el resto de la aplicación? O lo tengo que poner en todos los Forms para que dé resultado?

Cita:
Thread.CurrentThread.CurrentCulture = New Globalization.CultureInfo("fr-FR")

saludos!
  #17 (permalink)  
Antiguo 01/04/2005, 12:31
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 9 meses
Puntos: 50
Cita:
si pongo el siguiente código en el formulario principal de una aplicación WinForms, ya no te tendré que tocar nada más en el resto de la aplicación?
Con que lo cargues en el formulario prinicipal es suficiente para que le afecte a toda la aplicación.. ya que estarás trabajando sobre la misma instancia..
  #18 (permalink)  
Antiguo 10/04/2005, 20:37
 
Fecha de Ingreso: noviembre-2004
Mensajes: 48
Antigüedad: 20 años
Puntos: 0
cool

Gracias Rootk, realmente eres bueno, esa es la solución, yo use
Thread.CurrentThread.CurrentCulture = New Globalization.CultureInfo("es-MX")

y me funciona de maravilla. con esto me ahorre bastante trabajo, ya me tenia arto ir a modificar la configuracion regioanal de las maquinas cliente cada vez que instalaba mi aplicacion por primera vez.

adios, y gracias nuevamente.
  #19 (permalink)  
Antiguo 11/04/2005, 08:24
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 9 meses
Puntos: 50
Cita:
y me funciona de maravilla. con esto me ahorre bastante trabajo,
me da gusto que te haya servido friend..

Salu2
  #20 (permalink)  
Antiguo 25/04/2005, 13:22
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 21 años, 1 mes
Puntos: 156
Cita:
Iniciado por enrique_g_g
cool

Thread.CurrentThread.CurrentCulture = New Globalization.CultureInfo("es-MX")
acabo de escribir este código en mi aplicación, y me señala error en "Thread", dice "variable no declarada"....

Que me he dejado de poner?


saludos!
  #21 (permalink)  
Antiguo 25/04/2005, 13:25
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 21 años, 1 mes
Puntos: 156
vale, me respondo a mi misma, me he dejado esto:

System.Threading.

delante de Thread.

ok, me merezco una colleja, porque esto ya estaba puesto más arriba jeje

saludos!
  #22 (permalink)  
Antiguo 25/04/2005, 13:26
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 10 meses
Puntos: 7
Me imagino, que te falta un "Imports System.Threading"
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #23 (permalink)  
Antiguo 27/04/2005, 12:37
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 21 años, 1 mes
Puntos: 156
otro problemilla:

pues resulta que ahora si la configuración regional de la máquina los decimales esta con coma "," pues cuando almaceno los datos en la BD, me los tranforma, aunque en la aplicación me funciona bien hasta que no almaceno porque tengo puesto lo del culture info, pero una vez almaceno en la BD pues ya los muestra mal.

Por ejemplo, si tengo este numero:

21.25

Pues cuano lo alamceno en la BD, queda almacenado así:

2125

saludos!
  #24 (permalink)  
Antiguo 28/04/2005, 04:02
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 21 años, 1 mes
Puntos: 156
Utilizo la BD de Access, por si tiene algo que ver.

Hay alguna forma de decirle que no coja la config. regional de la máquina, y que tenga x formato los números?

saludos!
  #25 (permalink)  
Antiguo 15/06/2005, 09:26
Avatar de grisel  
Fecha de Ingreso: diciembre-2004
Ubicación: Mexico
Mensajes: 215
Antigüedad: 19 años, 10 meses
Puntos: 0
Configuracion Regional

Hola

He revisado los post referente a esto y he visto q puedo poner codigo para no estar cambiando la configuracion de la maquina, pero hasta donde vi esto era para aplicaciones windows.

Trabajaba en un aplicacion web donde no tenia ningun problema al insertar en la base de datos, pero comenze a trabajar en una aplicacion windows y los datos de tipo float los colocaba como enteros, esto fue porque tenia otra configuracion en mi maquina ok se la cambie y funciono, ahora q regreso a trabajar con la aplicacion web los datos de tipo float 56.33 me cambia el "." por la "," es decir 56,33.

Cambie una vex mas la configuracion pero no pasa nada me sigue marcando ese error.

Si alguien me pudiera ayudar porque no entiendo porque

gracias
saludos!
__________________
grissss :Zzz:
  #26 (permalink)  
Antiguo 17/06/2005, 08:24
Avatar de rodri  
Fecha de Ingreso: febrero-2005
Mensajes: 406
Antigüedad: 19 años, 8 meses
Puntos: 2
No se si esta sea la solucion, pero por que no usar Javascript cambiando el codigo ASCII del punto (creo que es 44 o 46) por el ASCII de la coma(44 o 46)?. No recuerdo el codigo pero supongo que debes llamar a la función Javascript y preguntar si el ASCII y luego cambiarlo. no se si ayude pero asi me funcionó un textbox en el que los usuarios ponían intuitivamente el punto en lugar de la coma.
__________________
0.o Rodri
  #27 (permalink)  
Antiguo 10/06/2008, 09:36
 
Fecha de Ingreso: enero-2008
Mensajes: 42
Antigüedad: 16 años, 9 meses
Puntos: 0
De acuerdo Respuesta: numeros decimales con punto

Cita:
Iniciado por RootK Ver Mensaje
Con que lo cargues en el formulario prinicipal es suficiente para que le afecte a toda la aplicación.. ya que estarás trabajando sobre la misma instancia..
EXCELENTE TU AYUDA RootK... ERES MUY PILO...

MIL GRACIAS ME HAS SACADO DE UN APURO

Gracias nuevamente

LuzDa
  #28 (permalink)  
Antiguo 10/06/2008, 11:13
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 9 meses
Puntos: 50
Respuesta: numeros decimales con punto

de nada luzda, ya tenía varios años que no veía éste post

17-jun-2005, 09:24

Salu2
  #29 (permalink)  
Antiguo 24/08/2008, 15:14
 
Fecha de Ingreso: abril-2008
Mensajes: 12
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: numeros decimales con punto

Tengo una duda: Ese codigo que coloco en el form principal me cambia el separador decimal q esta en coma (,) por punto (.). Bueno hasta hay va bien, pero la duda es si me cambia el simbolo separador para todo el sistema de la pc, es decir yo voy a configuracion regional, y si miro este cambia por el que coloque mediante el codigo????

Por q si en la pc hay programas q utilizan la coma (,) al realizar el cambio les afecta.
Entonces: si ese codigo cambia el simbolo separador de toda la pc estamos generando problemas a otras aplicaciones. Que se puede hacer para q el nuestro software tome el punto (.) o la coma (,) independientemente de lo q halla en la pc..... gracias
  #30 (permalink)  
Antiguo 24/08/2008, 20:39
 
Fecha de Ingreso: abril-2008
Mensajes: 12
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: numeros decimales con punto

Cita:
Iniciado por RootK Ver Mensaje
de nada luzda, ya tenía varios años que no veía éste post

17-jun-2005, 09:24

Salu2
Tengo una duda: Ese codigo que coloco en el form principal me cambia el separador decimal q esta en coma (,) por punto (.). Bueno hasta hay va bien, pero la duda es si me cambia el simbolo separador para todo el sistema de la pc, es decir yo voy a configuracion regional, y si miro este cambia por el que coloque mediante el codigo????

Por q si en la pc hay programas q utilizan la coma (,) al realizar el cambio les afecta.
Entonces: si ese codigo cambia el simbolo separador de toda la pc estamos generando problemas a otras aplicaciones. Que se puede hacer para q el nuestro software tome el punto (.) o la coma (,) independientemente de lo q halla en la pc..... gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:36.