[2.0] Moltiplicare Double per Decimal

venerdì 18 gennaio 2008 - 11.47

FedericoC Profilo | Junior Member

Ciao,

Devo fare il prodotto della quantitià di alcuni prodotti per il loro prezzo, la quantità è un double, mentre il prezzo è decimal, ma ottengo errore:

Impossibile applicare l'operatore '*' a operandi di tipo 'double' e 'decimal'


Qualche soluzione?

sanbiz Profilo | Senior Member

>Devo fare il prodotto della quantitià di alcuni prodotti per
>il loro prezzo, la quantità è un double, mentre il prezzo è decimal,
>ma ottengo errore:
>
>Impossibile applicare l'operatore '*' a operandi di tipo 'double'
>e 'decimal'

Sinceramente non ho capito.

Dim qta As Double = 121
Dim prezzo As Decimal = 18.3456
Debug.Print(qta * prezzo)
/* Output
2219,8176
*/
--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/

aiedail92 Profilo | Expert

Ciao

Il fatto è che (per quello che ho capito) il VB esegue delle conversioni implicite, cosa che non avviene in C#. Quindi per eseguire correttamente la tua moltiplicazione in C# devi prima eseguire un cast in modo da avere due numeri dello stesso tipo: o solo decimal, o solo double.

Luca

FedericoC Profilo | Junior Member

mi conviene convertire in decimal o in double?

aiedail92 Profilo | Expert

Dipende dalla precisione dei dati di cui hai bisogno: i decimal hanno alta precisione (28 cifre significative) ma un intervallo ridotto, mentre i double hanno valori a virgola mobile a 64 bit (15 cifre significative)

Luca

FedericoC Profilo | Junior Member

trattandosi di valori monetari in € mi basta avere 4 numeri dopo la virgola, mentre per i valori interi difficilmente un prezzo potrà essere sopra a un milione


Io a questo punto convertirei i double in decimal, che dite?

aiedail92 Profilo | Expert

Perfetto, procedi pure. Se incontri problemi di prestazioni perchè devi immagazzinare un grande numero di dati, passa ai double che dovrebbero occupare meno memoria, altrimenti è tutto ok.

Luca

FedericoC Profilo | Junior Member

Dovendo salvare i dati sul database però non sarebbe meglio salvarli come decimal?


A questo punto mi consigli di salvarli come decimal, ma quando necessario fare una conversione in double a runtime e moltiplicarli per la quantità (ovvere per double)?

aiedail92 Profilo | Expert

Scusa la domanda, ma rileggendo il post iniziale mi sono chiesto: come mai usi una variabile di tipo double per indicare la quantità dei prodotti (che dovrebbe essere un numero intero)? Perchè se puoi usare una variabile di tipo long invece che double per la quantità dei prodotti, il problema è risolto: infatti il prodotto fra decimal e long è possibile farlo anche senza casting (cosa che credo rallenti il programma).
Altrimenti salva i i prezzi in decimal e la quantità in double ed effettua tutte le volte la conversione da decimal a double.

Luca

FedericoC Profilo | Junior Member

Il fato è che per le quantita di quintali, a volte si vende dei kg, quindi bisogna fare 0,01... per questo non posso tenere gli interi...
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5