Domanda

Sto facendo dei calcoli molto semplici e sto salvando il risultato su un DB MS SQL2008.

Sto calcolando la media fuori da alcuni numeri, che sono valori di byte tra 1 < - > 5. Desidero registrare probabilmente solo 2 cifre decimali. Non mi interessa arrotondare per il secondo decimale (es. A 1.155 == 1.5 o 1.6 .. non sono troppo graduale).

Quindi .. dovrei memorizzare il risultato medio come float, decimale o doppio?

Quando controllo cosa restituisce LINQ, può restituire tutti e tre i valori!

Infine, quale sarebbe anche il campo relativo al tipo di dati SQL.

evviva!

È stato utile?

Soluzione

Ciò di cui hai bisogno è il tipo di dati DECIMAL:

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

Quando inserisci valori, puoi fare affidamento sull'arrotondamento incorporato o decidere esplicitamente quale arrotondamento vuoi:

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

Decimale (10,2) significa che è possibile utilizzare dieci cifre e che due di esse devono essere considerate come dopo il punto decimale. cioè il numero più alto che può contenere il decimale (4,2) è 99,99. Cercare di impostarlo su 100 comporterà un overflow aritmetico.

Altri suggerimenti

Vorrei scegliere Float su Double e probabilmente Float su Decimal :. Id andrò per Floatal anche se tutti dovrebbero dare lo stesso risultato.

Dai un'occhiata a queste due pagine per Floats & amp ; Decimali

Il decimale è utilizzato principalmente per la valuta. Mentre funzionerebbe, la gente potrebbe trovarlo confuso. In questo caso, penso che float sarebbe una scelta migliore.

Decimale - è il più semplice, tuttavia qualsiasi mentato farà il lavoro

Se vuoi archiviare i risultati usando il minor spazio possibile, probabilmente potresti fare qualcosa del genere (pseudocodice):

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

Questo ti darà il valore 352 per una media di 3,52 in modo da poterlo memorizzare come intero (il byte sarebbe abbastanza grande immagino) e dividerlo per 100 quando vuoi visualizzarlo.

D'altra parte se non ti interessa la memorizzazione del valore medio, l'utilizzo di valori float è forse più veloce. (Prova entrambi per vedere cosa è effettivamente più veloce sul tuo sistema.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top