2012-06-20 17 views
8

Para un SQL int que se está convirtiendo en un flotante, ¿cómo puedo establecer la precisión del número de coma flotante?SQL establece la precisión de punto flotante

Ésta es la selección me gustaría para truncar a dos o 3 cifras decimales:

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

Gracias!

Respuesta

22

En TSQL, puede especificar dos tamaños diferentes para float, 24 o 53. Esto establecerá la precisión en 7 o 15 dígitos, respectivamente.

Si todo lo que quiero hacer es truncar a un determinado número de cifras decimales, se puede utilizar ROUND, es decir:

ROUND(AVG(CAST(e.employee_level as float)), 3) 
+2

Debe tenerse en cuenta que si utiliza flotación (n) para un n que no sea 24 o 53, se redondea a 24 o 53 – Bort

1

Como regla general, no se puede especificar el número de dígitos después del punto decimal para un número de coma flotante. Los tipos de datos de coma flotante almacenan la aproximación de coma flotante más cercana a cualquier valor dado. La aproximación de coma flotante más cercana es poco probable que tenga la cantidad de dígitos que desea. Aunque es posible que pueda suprimir cada dígito después del tercero, eso solo cambiará la apariencia del valor, no el valor en sí mismo.

Los enteros son una historia diferente. Un entero (almacenado, convertido o emitido en un tipo de datos de coma flotante) se almacenará exactamente en un amplio rango. Los tipos de datos de punto flotante no tienen que almacenar unidades fraccionarias para enteros.

me gustaría sugerir, sin embargo, que la mejor práctica para usted es

  • evitar la proyección de números enteros a punto flotante si no necesita unidades fraccionarias, o
  • enteros elenco de decimal o numérico si hace necesita unidades fraccionarias, o
  • manipule los problemas de visualización por completo en el código de la aplicación.
Cuestiones relacionadas