Newsgroup: it.comp.lang.visual-basic
Titolo: Virgola mancante in moltiplicazione decimale Plz help

Allora per chiarezza vi pasto la mia debug win:
i kilogrammi sono 1,54
text1 è 1.54
prun è 2
importo = CStr(Text1(i).Text * prun(i).Text) --- Risultato 308
quindi quello che faccio è moltiplicare KG * Prun(i) ....
La mia calcolatrice mi dice che 2 * 1.54 fa 30,8
Visual basic mi dice che fa 308....
Dove sbaglio ?
I dati sono dichiarati come currency ...
AIUTO :(

I dati sono dichiarati come currency ...
eh no, come string... se leggi la proprietà .text
cmq hai controllato nelle impostazioni internazionali qual'è il
separatore decimale?
Ciao,
Moreno
-- 
sirri at morenosoft dot com
Moreno Sirri VB Site - 
http://www.msvbsite.net
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.it-lang-vb.net
---------------------------------------------------------------------------


Guarda ti riporto uno stralcio del codice
Dim Kg As Currency
Dim importo As Double
 Kg = Val(Text1(i).Text)
        importo = Text1(i).Text * prun(i).Text
'Prun(i) è un numero intero, in questo caso, è un 2
(ho tolto cstr che non serve a nulla, dato che casmbia un numerico in
stringa...)
Che macello... :(

        importo = Text1(i).Text * prun(i).Text
da msdn:
Note   The Val function recognizes only the period (.) as a valid
decimal separator. When different decimal separators are used, as in
international applications, use CDbl instead to convert a string to a
number.
ti consiglio di leggerti per bene le caratteristiche delle varie
funzioni di conversione a seconda della locale...


 number.
Devo ringraziarti.
Avevo gia letto sulla guida online questa parte...
Pero' guardando il tuo post mi sono ricordato di una routine che avviene
precedentemente in cui succedono un bel po' di casini con cdbl ... :)))
Ho ripulito un po' :) ora funzica :) grazie per la luce moreno ;)

 importo = CStr(Text1(i).Text * prun(i).Text)
A leggere una cosa del genere mi viene la pelle d'oca...
Alberto

I dati sono dichiarati come currency ...
 :-)



Ochheppalle :)
Ma io sono _IL_ niubbo del Ng :)
E se mi prendete pure per culo :) avrete un niubbo di meno da prendere per
culo ( ridondanza ) :)
Cmq ho risolto ,
credo che sia sbagliato ugualmente , ma i risultati me li da esatti:
Vabeh, ho tolto Cstr , dopo aver metabolizzato che serve a tutt'altro :)
Niente piu vaccate di questo genere , lo giuro :)
E tutti i vari Val e funzioncine varie ...semplicemente, variabile *
variabile :)
e mi da il risultato esatto :)

> I dati sono dichiarati come currency ...
L'ho letto...
E ha contribuito a rendere ancora più interessante quel CStr davanti alla
parentesi.
Comunque, affinchè Akuma possa capire che le conversioni implicite
avvengono, traduco la sua formula qui sopra come avviene in realtà:
importo = CCur(CStr(Val(Text1(i).Text) * Val(prun(i).Text)))
Questo è quello che accade in realtà.
Utilizzare la forma di Akuma rende, oltre che contorto, anche molto poco
leggibile il codice.
Tant'è, che a fronte di un errore non si vedeva la funzione che generava il
problema, in quanto era implicita e non esplicitata.
Comunque devo rendergli merito di non avere usato le proprietà predefinite,
come fanno molti newbies.
Ciao
Alberto
--
E non so se avrò gli amici a farmi il coro,
o se avrò soltanto volti sconosciuti,
canterò le mie canzoni a tutti loro
e alla fine della strada
potrò dire che i miei giorni li ho vissuti...

 importo = Text1(i).Text * prun(i).Text
importo non dovrebbe essere
importo =   KG    * val(prun(i).text)
??