Pregunta

Estoy haciendo algunos cálculos matemáticos muy simples y guardando el resultado en una base de datos MS SQL2008.

Estoy promediando algunos números, que son valores de bytes entre 1 < - > 5. Deseo registrar probablemente solo 2 decimales. No me importa redondear el segundo decimal (p. Ej., 1.155 == 1.5 o 1.6 ... no estoy demasiado escalonado).

Entonces ... ¿debo almacenar el resultado promedio como flotante, decimal o doble?

¡Cuando verifico lo que LINQ devuelve, puede devolver los tres valores!

Por último, cuál sería el campo de tipo de datos SQL relevante, también.

¡salud!

¿Fue útil?

Solución

Lo que necesita es el tipo de datos DECIMAL:

declare @val decimal(10,2)
select @val = 10.155
select @val

Cuando ingresa valores, puede confiar en el redondeo incorporado o decidir explícitamente qué redondeo desea:

select val = round(10.155, 2, 0) -- rounded
select val = round(10.155, 2, 1) -- truncated

Decimal (10,2) significa que se pueden usar diez dígitos, y que dos de ellos deben tomarse después del punto decimal. es decir, el número más alto que puede contener el decimal (4,2) es 99,99. Intentar establecerlo en 100 dará como resultado un desbordamiento aritmético.

Otros consejos

Elegiría Flotar sobre Doble y probablemente Flotar sobre Decimal :. Iría por Floatal, aunque todos deberían dar el mismo resultado.

Eche un vistazo a estas dos páginas para Floats & amp ; Decimales

Decimal se usa principalmente para moneda. Si bien funcionaría, las personas podrían encontrarlo confuso. En este caso, creo que flotar sería una mejor opción.

Decimal: es el más simple, sin embargo, cualquiera de los mencionados hará el trabajo

Si desea almacenar los resultados utilizando el menor espacio posible, probablemente podría hacer algo como esto (pseudocódigo):

integer = ( sum(all_values) / all_values.count().float ) * 100;

Esto le dará el valor 352 para un promedio de 3.52 para que pueda almacenarlo como un entero (supongo que el byte sería lo suficientemente grande), y simplemente dividirlo por 100 cuando quiera mostrarlo.

Por otro lado, si no le importa el almacenamiento del valor promedio, el uso de valores flotantes es quizás más rápido. (Pruebe ambos para ver qué es realmente más rápido en su sistema).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top