Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
.NET Framework
[2.0] Moltiplicare Double per Decimal
venerdì 18 gennaio 2008 - 11.47
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
FedericoC
Profilo
| Junior Member
134
messaggi | Data Invio:
ven 18 gen 2008 - 11:47
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
208
messaggi | Data Invio:
ven 18 gen 2008 - 12:15
>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
993
messaggi | Data Invio:
ven 18 gen 2008 - 12:53
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
134
messaggi | Data Invio:
ven 18 gen 2008 - 14:48
mi conviene convertire in decimal o in double?
aiedail92
Profilo
| Expert
993
messaggi | Data Invio:
ven 18 gen 2008 - 15:29
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
134
messaggi | Data Invio:
ven 18 gen 2008 - 16:05
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
993
messaggi | Data Invio:
ven 18 gen 2008 - 16:22
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
134
messaggi | Data Invio:
ven 18 gen 2008 - 22:04
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
993
messaggi | Data Invio:
sab 19 gen 2008 - 14:19
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
134
messaggi | Data Invio:
lun 21 gen 2008 - 16:23
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...
Torna su
Stanze Forum
Elenco Threads
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 !