none
El numero de valores debe coincidir con el de columnas de insert into RRS feed

  • Pregunta

  • Ingreso una operación donde ingreso 0.25 pero me da por respuesta 25.0 , por lo tanto no puedo guardarlo en la base de datos

    Private Sub btningresar_Click(sender As Object, e As EventArgs) Handles btningresar.Click
            tara = CDbl(LblIndicador2.Text)    ====== 0.25
            PB = CDbl(lblindicador.Text)
            'Calcular el peso:
            PN = Convert.ToDouble(PB - tara) ====== 25.0
    jueves, 22 de febrero de 2018 17:00

Respuestas

  • verifica a ver si esto funciona para ti

    dim PN as double

    PN = string.format("{0:n2}", PB - tara)

    • Marcado como respuesta Pablo Rubio domingo, 25 de febrero de 2018 10:17
    jueves, 22 de febrero de 2018 17:25
  • No uses CDbl ni Convert.ToDouble. Con estas instrucciones no tienes control acerca de si los los numeros se interpretan con coma decimal y punto de miles, o coma de miles y punto decimal, por lo que los resultados son impredecibles dependiendo de como este configurado el equipo en el que lo ejecutas.

    En su lugar, usa Double.Parse, que tiene un parametro opcional que te permite forzar el formato de conversion. Por ejemplo:

    Dim tara as Double = Double.Parse(LblIndicador2.Text, NumberStyles.All, new CultureInfo("es-ES"))

    En ese ejemplo te he puesto que haga la conversion conforme con los criterios de español-España, es decir, coma decimal y punto de miles, pero si quieres teclear tus números en otro formato, puedes indicar el país correspondiente (por ejemplo, "en-US" te da inglés de Estados Unidos, que usa punto decimal y coma de miles).

    Similarmente, si necesitas convertir el Double a String para insertarlo en la base de datos, deja que lo conviertan los drivers de la BD, pero si no puedes hacer eso y quieres meterlo tú mismo en la sentencia, recuerda que siempre tiene que ir con punto de decimales (no coma), por lo que no debes usar un simple .ToString ni otras conversiones automáticas, ya que te pondrían punto o coma según la configuración del sistema y te fallaría aleatoriamente en unos sistemas sí y otros no. Fuerza la conversión de Double a String para que siempre use un punto.

    • Marcado como respuesta Pablo Rubio domingo, 25 de febrero de 2018 10:17
    jueves, 22 de febrero de 2018 17:43

Todas las respuestas

  • verifica a ver si esto funciona para ti

    dim PN as double

    PN = string.format("{0:n2}", PB - tara)

    • Marcado como respuesta Pablo Rubio domingo, 25 de febrero de 2018 10:17
    jueves, 22 de febrero de 2018 17:25
  • Ingreso una operación donde ingreso 0.25 pero me da por respuesta 25.0 , por lo tanto no puedo guardarlo en la base de datos

    Hola Arnold-Tec,

    Lo que pasa es que en tu configuración regional está asignado la coma (,) como separador decimal y no el punto. Si cambias el 0.25 que ingresas por el 0,25 estoy seguro que funcionaría sin problemas.

    Si quieres utilizar el punto (.) como separador decimal tendrías que cambiar la referencia cultural de la aplicación :

    Application.CurrentCulture = CultureInfo.InvariantCulture

    O asignarlo en el app.config.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    jueves, 22 de febrero de 2018 17:43
  • No uses CDbl ni Convert.ToDouble. Con estas instrucciones no tienes control acerca de si los los numeros se interpretan con coma decimal y punto de miles, o coma de miles y punto decimal, por lo que los resultados son impredecibles dependiendo de como este configurado el equipo en el que lo ejecutas.

    En su lugar, usa Double.Parse, que tiene un parametro opcional que te permite forzar el formato de conversion. Por ejemplo:

    Dim tara as Double = Double.Parse(LblIndicador2.Text, NumberStyles.All, new CultureInfo("es-ES"))

    En ese ejemplo te he puesto que haga la conversion conforme con los criterios de español-España, es decir, coma decimal y punto de miles, pero si quieres teclear tus números en otro formato, puedes indicar el país correspondiente (por ejemplo, "en-US" te da inglés de Estados Unidos, que usa punto decimal y coma de miles).

    Similarmente, si necesitas convertir el Double a String para insertarlo en la base de datos, deja que lo conviertan los drivers de la BD, pero si no puedes hacer eso y quieres meterlo tú mismo en la sentencia, recuerda que siempre tiene que ir con punto de decimales (no coma), por lo que no debes usar un simple .ToString ni otras conversiones automáticas, ya que te pondrían punto o coma según la configuración del sistema y te fallaría aleatoriamente en unos sistemas sí y otros no. Fuerza la conversión de Double a String para que siempre use un punto.

    • Marcado como respuesta Pablo Rubio domingo, 25 de febrero de 2018 10:17
    jueves, 22 de febrero de 2018 17:43