Newsgroup: it.comp.lang.visual-basic
Titolo: tipi di variabili!!! piccolo problema!!!

Salve a tutti...avrei un piccolo problema: dopo aver inserito una
formula che da come risultato un coefficiente con molti decimali, mi
risulta un errore di overflow...credo che ciò derivi dal fatto che non
ho dichiarato il tipo giusto...ma anche cambiando tipo da single a
double il risultato non cambia...qual'è il tipo giusto in questo
caso??? grazie mille....ciao

caso??? grazie mille....ciao
Un esempio di codice aiuterebbe a capire.
--
ciao
  Stefano

   Stefano
ok mi spiego meglio...ho dichiarato una variabile x come single o
double...a questa variabile ho assegnato una formula: (26000+7500 -
num)26000, dove num sta per una somma y, e il risultato è un
coefficiente del tipo "0,e parecchi decimali dopo la virgola"....il
problema è ke non so ke tipo di variabile devo assegnare....spero di
essermi spiegata meglio, anke se non ne sono certa...cmq grazie

essermi spiegata meglio, anke se non ne sono certa...cmq grazie
Non ho capito niente.
Se parli di coefficiente ci deve essere una divisione da qualche parte, e non
l'hai scritta.
Posta il codice di quello che hai fatto, altrimenti la vedo dura risolvere il
tuo problema.
--
ciao
  Stefano

> "0,e parecchi decimali dopo la virgola"
Quanti decimali? Fai un esempio di risultato decimale? 


Converti in double ogni singolo termine dell'espressione, altrimenti VB li
interpreterà come Integer (e quindi 26000+7500 = 33500 > 32767 --> overflow).
-- 
Bye
Raf
-----------------------------------------------------
Funk: cooler than the other side of the pillow.

 Funk: cooler than the other side of the pillow.- Nascondi testo tra virgolette -- Mostra testo tra virgolette -
ho provato a dichiarare tutte le variabili double...ma non funziona lo
stesso...cmq provo a postare il codice....
nel modulo:
public ded as double
public ret as double
private sub cmdcalcola_click
ded = (26000 + 7500 - rpa) / 26000)
...
end sub
il risultato è un coefficiente ad esempio 0.123456789
da qui risulta l'overflow...spero mi possate aiutare....grazie...


come ti hanno detto l'overflow avviene nel momento in cui il programma 
fa la somma tra 26000 e 7500 , il risultato eccede la capacita' dell'integer
devi spiecificare le costanti come valori in vircola mobile, non solo le 
variabili scrivendo cosi':
ded = (26000. + 7500. - rpa) / 26000.)
NOTA BENE la presenza deoi punti dopo i numeri
non ti preoccupare se dopo la digitazione al posto del punto appare un 
cancelletto ( # ) indica infatti che la costante e' in virgola mobile 
anziche' un intero


 da qui risulta l'overflow...spero mi possate aiutare....grazie...
RAFUNK ha scritto: "Converti in double ogni singolo termine 
dell'espressione", NON "Dichiara come double ogni variabile"
La tua espressione:
ded = (26000 + 7500 - rpa) / 26000)
ha il problema di avere dei passaggi intermedi che eccedono l'Integer, 
anche se ogni singolo elemento ci starebbe.
A seconda di ciò che ti serve in termini di precisione, devi scegliere 
tu il tipo adeguato. Se si parla di importi, sicuramente va usato un 
virgola fissa (come il Currency, che è molto capiente), se si parla di 
coefficienti scientifici o finanziari (come tassi da comporre, per 
intenderci), occorre un virgola mobile, come il Double.
In linea di principio:
Se sono importi:
public ded as Currency
public ret as Currency
private sub cmdcalcola_click
ded = (26000@ + 7500@ - rpa) / 26000@)
...
end sub
Se sono cose 'scientifiche' o finanziarie:
public ded as Dobule
public ret as Double
private sub cmdcalcola_click
ded = (26000# + 7500# - rpa) / 26000#)
...
end sub
Poi, in realtà la cosa andrebbe ottimizzando miscelando i virgola fissa 
coi virgola mobile anche all'interno della stessa espressione. Ma cosa 
rappresentino quei numeri, e che livelli di precisione ti servano, lo 
sai solo tu.
Ciao
Alberto
-- 
Thomas Fuller: Ci sono persone che sono state considerate coraggiose 
perchè avevano troppa paura per scappare.

 > da qui risulta l'overflow...spero mi possate aiutare....grazie...RAFUNK ha scritto: "Converti in double ogni singolo termine

grazie mille...il problema stava nello specificare le costanti in
virgola mobile...ciao e alla prossima...