Para un int de SQL que está siendo convertida en un flotador, ¿cómo puedo establecer la precisión del número de punto flotante?

Esta es la selección me gustaría truncar a dos o 3 lugares decimales:

AVG(Cast(e.employee_level as Float))avg_level,

Gracias!

OriginalEl autor CodeKingPlusPlus | 2012-06-20

2 Comentarios

  1. 22

    En TSQL, puede especificar dos tamaños diferentes para flotador, 24 o 53. Esto va a establecer la precisión de 7 o 15 dígitos respectivamente.

    Si todo lo que quiero hacer es truncar a un número fijo de lugares decimales, puede utilizar RONDA, es decir:

    ROUND(AVG(CAST(e.employee_level as float)), 3)
    Deben tener en cuenta que si utiliza float(n) para algún n otros de 24 o 53, se pone redondeado hasta 24 o 53

    OriginalEl autor

  2. 2

    Como regla general, usted no puede especificar el número de dígitos después del punto decimal de un número en punto flotante. De punto flotante de tipos de datos de la tienda más cercana de punto flotante de aproximación a cualquier valor dado. El más cercano de punto flotante de aproximación es poco probable que el número de dígitos que desea. Aunque usted puede ser capaz de suprimir todos los dígitos después de la tercera, que sólo va a cambiar la apariencia del valor, no el valor en sí mismo.

    Enteros son una historia diferente. Un entero–almacenados, convertidos, o echar a un punto flotante tipo de datos se almacena exactamente en un rango amplio. De punto flotante de tipos de datos no tienen para almacenar las unidades fraccionarias para los números enteros.

    Yo sugeriría que, a pesar de que la mejor práctica para usted es

    • evitar la proyección de los enteros a punto flotante si usted no necesita las unidades fraccionarias, o
    • elenco enteros a decimal o numeric si hacer necesidad de fracciones de unidades, o
    • manejar problemas de pantalla completamente en el código de la aplicación.

    OriginalEl autor

Dejar respuesta

Please enter your comment!
Please enter your name here