139 votos

Diferencia entre numérico, flotante y decimal en Sql Server

Busqué en Google y también visité el

decimal y numérico y Ayudante del Servidor Sql

para averiguar la diferencia entre los tipos de datos numéricos, de float y decimales y también para averiguar cuál debe utilizarse en cada situación.

Para cualquier tipo de transacción financiera, ¿cuál es la preferida y por qué? Por ejemplo, para el campo de los salarios.

208voto

imanabidi Puntos 3203

usar el float o real tipos de datos sólo si la precisión proporcionada por decimal (hasta 38 dígitos) es insuficiente

tan generalmente porque el precisión proporcionada por el decimal es [10E38 ~ 38 dígitos] si tu número puede caber en él, no mires a flotar.

más información útil

  • numérico = decimal (5 a 17 bytes) ( Exactamente Tipo de datos numéricos)
    • se mapeará a Decimal en .NET
    • ambos tienen (18, 0) como parámetros por defecto (precisión, escala) en Sql Server
    • Escala = número máximo de dígitos decimales que se pueden almacenar a la derecha del punto decimal.
    • Tenga en cuenta que el dinero (8 bytes) y la moneda pequeña (4 bytes) también son exactos y se asignan a los decimales en .NET y tienen 4 puntos decimales. MSDN )
    • decimal y numérico (Transact-SQL) - MSDN
  • real (4 bytes) ( Aproximadamente Tipo de datos numéricos)
  • flotar (8 bytes) ( Aproximadamente Tipo de datos numéricos)
    • se asignará a Double in .NET
  • Todos exacto los tipos numéricos siempre producen el mismo resultado, independientemente del tipo de la arquitectura del procesador se está utilizando o la magnitud de los números
  • El parámetro suministrado al tipo de datos del flotador define el número de bits que son utilizado para almacenar el mantissa del número de punto flotante .
  • El tipo de datos numéricos aproximados usualmente usa menos almacenamiento y tiene mejor velocidad (hasta 20x) y también deberías considerar cuando se convirtieron en .NET

Exact Numeric Data Types Approximate Numeric Data Types

la fuente principal : MCTS Kit de entrenamiento a ritmo propio (Examen 70-433): Desarrollo de la base de datos Microsoft® Sql Server® 2008 - Capítulo 3 - Tablas, tipos de datos e integridad de los datos declarativos Lección 1 - Elección de los tipos de datos (pautas) - Página 93

21voto

priyanka.sarkar Puntos 5980

Gracias, obtuve la respuesta de este sitio

Servidor Sql - Diferencia y explicación entre DECIMAL, FLOTANTE y NUMÉRICO

10voto

kmote Puntos 3948

Directrices de MSDN: Usando datos decimales, de float y reales

La precisión máxima por defecto de los tipos de datos numéricos y decimales es 38. En el Transact-SQL, el numérico es funcionalmente equivalente al decimal tipo de datos. Usar el tipo de datos decimales para almacenar números con decimales cuando los valores de los datos deben ser almacenados exactamente como se especifica.

El comportamiento de flotar y real sigue el Especificación IEEE 754 sobre tipos de datos numéricos aproximados. Debido a la naturaleza aproximada de los tipos de datos flotantes y reales, no utilice estos tipos de datos cuando los se requiere un comportamiento numérico, como en las aplicaciones financieras, en operaciones de redondeo, o en controles de igualdad. En su lugar, utilice el tipos de datos enteros, decimales, de dinero o de dinero pequeño. Evite utilizar la float o columnas reales en las condiciones de búsqueda de la cláusula WHERE, especialmente el = y <> operadores. Es mejor limitar la float y las columnas reales a > o < comparaciones.

7voto

AlexKuznetsov Puntos 9555

No es una respuesta completa, pero es un enlace útil:

"Con frecuencia hago cálculos contra valores decimales. En algunos casos, el hecho de arrojar los valores decimales a flote lo antes posible, antes de cualquier cálculo, produce una mayor precisión. "

http://sqlblog.com/blogs/alexander_kuznetsov/archive/2008/12/20/for-better-precision-cast-decimals-before-calculations.aspx

2voto

Brian Reiter Puntos 825

El decimal tiene una precisión fija mientras que el flotador tiene una precisión variable.

EDITAR (no leyó toda la pregunta): Float(53) (alias real) es un número de punto flotante de doble precisión (32 bits) en el Servidor Cuadrado. Float regular es un número de punto flotante de precisión simple. Doble es una buena combinación de precisión y simplicidad para muchos cálculos. Puedes crear un número de muy alta precisión con decimal - hasta 136 bits - pero también tienes que tener cuidado de definir tu precisión y escala correctamente para que pueda contener todos tus cálculos intermedios hasta el número de dígitos necesario.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X