Pergunta

Eu estou fazendo alguma matemática muito simples e salvar o resultado em um MS SQL2008 DB.

Eu sou média os alguns números, que são valores de byte entre 1 <-> 5. Quero gravar provavelmente apenas 2 casas decimais. Eu não me importo sobre o arredondamento para o 2º lugar decimal (ex. A 1.155 == 1.5 ou 1.6 .. Eu não estou muito gradual).

Então .. eu deveria armazenar o resultado médio como um float, decimal ou duplo?

Quando eu verificar o que retorna LINQ, ele pode retornar todos os três valores!

Por fim, o que seria o campo SQL tipo de dados relevantes, também.

aplausos!

Foi útil?

Solução

O que você precisa é o tipo de dados decimal:

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

Ao introduzir valores, você quer pode contar com o construído em arredondamento, ou explicitamente decidir qual arredondamento você quer:

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

Decimal (10,2) significa que os dígitos dez pode ser usado, e que dois deles estão a ser tomadas como sendo depois do ponto decimal. isto é, o número mais alto que decimal (4,2) pode conter é de 99,99. Tentando configurá-lo para 100 resultará em excesso aritmético.

Outras dicas

Eu escolheria Float sobre duplo e provavelmente Flutuar sobre Decimal :. Id ir para Floatalthough todos devem dar o mesmo resultado.

Tenha um olhar para estas duas páginas para flutua & Decimals

Decimal é principalmente uso para a moeda. Enquanto ele iria trabalhar, as pessoas podem encontrá-lo confuso. Neste caso eu acho flutuador seria uma escolha melhor.

Decimal - é o mais simples, no entanto nenhum dos mentined irá fazer o trabalho

Se você quiser armazenar os resultados usando o mínimo de espaço possível você provavelmente poderia fazer algo assim (pseudocódigo):

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

Isto lhe dará o valor 352 para uma média de 3,52, assim você pode armazená-lo como um número inteiro (byte seria grande o suficiente eu acho), e apenas dividi-lo por 100 quando você quiser exibi-lo.

Por outro lado, se você não se preocupam com o armazenamento do valor médio, usando valores float é talvez mais rápido. (Test tanto para ver o que é realmente mais rápido em seu sistema.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top