>Se la memoria e la velocità di calcolo non sono un problema meglio
>i decimal sempre e comunque perchè portano con se un'enorme precisione
>utile nelle divisioni e nelle sottrazioni vicine allo zero come
>risultato. Ma se tu usi solo 4 decimali allora i double vanno
>più che bene e ti avanzano pure, in quanto portano con se più
>di 20 decimali e sono gestiti direttamente dal sistema e non
>hanno bisogno di trattamenti speciali, perciò per una migliore
>prestazione sicuramente i double sono ottimi e ne hai d'avanzo.
>
>Nel tuo caso direi double per una migliore stabilità del sistema
>per non essere troppo sovradimensionato.
Occhio che quando si devono memorizzare degli importi il campo double può portare a degli errori non trascurabili.
Se guardiamo la documentazione possiamo vedere che anche la microsoft consiglia di usare i decimal verso sql server per i tipi di dato Money o SmallMoney, quindi dove vengono memorizzati degli importi: http://msdn2.microsoft.com/en-us/library/ms131092.aspx
A scopo di esempio vi riporto due cicli, apparentemente identici, ma che hanno un risultato ben diverso l'uno dall'altro, e l'unica differenza è il tipo di dato utilizzato:
Dim dDoubleTotal As Double = 0
For i As Double = 0 To 1 Step 0.01
dDoubleTotal += 1
Next
Dim dDecTotal As Decimal = 0
For i As Decimal = 0 To 1 Step 0.01D
dDecTotal += 1
Next
Se provate ad eseguire i due frammenti di codice vedrete che ottenete due risultati diversi:
- dDoubleTotal = 100
- dDecTotal = 101
ovviamente il risultato corretto è quello con il decimal, perchè i cicli da fare sono 101