2011-07-21 44 views

Respuesta

44

No existe un equivalente directo, ya que no hay tipos incorporados de .NET que le permitan especificar la precisión/escala de forma explícita, que yo sepa. No hay fijo -point tipo NUMERIC.

decimal y double son los tipos de coma flotante comunes en .NET, con la implementación de decimaldecimal floating point (como numérico en T-SQL) y la implementación de doublebinary floating point comportamiento (como FLOAT y real en T-SQL). (Hay float, así, que es un tipo de punto flotante binario más pequeño.)

que debe elegir entre decimal y double basado en los valores que se van a representar - Me suelen pensar, valores artificiales "artificiales" (particularmente dinero) como apropiado para decimal, y valores naturales continuos (tales como dimensiones físicas) como apropiados para double.

+1

estas distinciones también se aplican a los tipos de servidor SQL - 'numérico' /' decimal' son tipos de coma flotante decimal, 'flotante' y' real' son puntos flotantes binarios, por lo que debería partido por igual. –

+0

@Damien: Gracias, editaré. –

9

Intente mirar this site como una guía para las asignaciones de tipos de datos. En cuanto a la precisión y la longitud, que permite controlar por sí mismo utilizando format specifiers

0

Hay dos respuestas en función de dos preguntas:

1) ¿Cuál es algo que le permite especificar la precisión y escala. Nada. Esto parece ser su pregunta, pero por las dudas:

2) ¿Qué es algo que le permite especificar un número flotante decimal número exactamente. De hecho, este es el tipo de Decimal, pero el punto es interno y está configurado en una de las 2^32 posiciones basadas en el número de entrada. No estoy seguro por qué, pero solo funcionan 28 valores, o 2^5 - 4 ..

Por lo tanto, aunque .Net permite que el decimal parezca un flotador, es muy diferente bajo las cubiertas y coincide con el decimal de SQLServer . Cualquier cosa que no sea una suma de potencia distinta de 2 valores es una estimación usando el punto flotante binario normal. Esto significa que incluso algo como el número 0.1 ya perdió precisión. Pero no con el tipo Decimal.

Cuestiones relacionadas