none
Error con decimales

    Pregunta

  • Hola a todos:

    Como puedo limitar el número de decimales en el valor "UmbralRentabilidad(i)"       '////Tipo decimal.

    El mismo da como resultado una gran cantidad de decimales: 0.6345461815273890443822471012D y resulta que el campo decimal está definido con una precisión de (18,5) por lo que lanza el error: La precisión del campo es demasiado pequeña para aceptar el valor numérico que intenta agregar.

    He de comentar que estoy trabajando con 3 bases de datos, por lo que no acabo de encontrar la manera para que me grabe correctamente el número en las 3 bases de datos como: 0.63554

    Las bases son Access, sqlCompact y SqlServer Express.

     With cmd.Parameters        
                        For i = 0 To 11
                            .Add(Configuracion.CreateParameter(cmd, String.Format("@ejer{0}", i), UmbralRentabilidad(i)
                        Next
                        .Add(Configuracion.CreateParameter(cmd, "@empresa", VarGlobal.StrCodEmpresa))
                    End With
    Bueno, gracias a todos.

    lunes, 10 de octubre de 2016 9:18

Respuestas

  • gemma_campillo,

    Pienso que al momento de establecer el valor al parámetro el mismo debería truncar automáticamente la cantidad de decimales según el tamaño establecido en la columna de base de datos. En cualquier caso, podrías usar la función ROUND() con un número de 5 posiciones decimales

    .Add(..., Decimal.Round(UmbralRentabilidad(i), 5)


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta gemma_campillo lunes, 10 de octubre de 2016 15:34
    lunes, 10 de octubre de 2016 15:29

Todas las respuestas

  • gemma_campillo,

    Pienso que al momento de establecer el valor al parámetro el mismo debería truncar automáticamente la cantidad de decimales según el tamaño establecido en la columna de base de datos. En cualquier caso, podrías usar la función ROUND() con un número de 5 posiciones decimales

    .Add(..., Decimal.Round(UmbralRentabilidad(i), 5)


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta gemma_campillo lunes, 10 de octubre de 2016 15:34
    lunes, 10 de octubre de 2016 15:29
  • Hola Williams:

    Bueno, es la que estoy aplicando desde que me la dijiste ayer. Eso funciona perfectamente.

    Con eso evito el error que me daba del campo demasiado pequeño.

    De cualquier forma, ya casi tengo arreglada la conversión, únicamente tengo problemas en sqlserver que me indica error al convertir el valor nvarchar a numeric.

    Voy a iniciar otra pregunta para no mezclar las cosas.

    Muchas gracias como querido Williams.

    Gemma

    lunes, 10 de octubre de 2016 15:34