Oppure

Loading
12/09/09 8:11
haw
ciao a tutti.
sono molto arrugginito con la programmazione e ho un problema di arrotonadamenti che mi fa impazzire.

dovrei arrivare a questo punto
if (MioNumero - Val(TextBox2.Text) = 0,01 then
sono arrivato anche a scrivere una bruttura del genere per arrivare al mio scopo
if (MioNumero - Val(TextBox2.Text)).ToString("0.00";) = "0,01" then

il problema sorge con gli arrotondamenti

dim aa,bb,cc as double
aa= 100.01
bb= 0.01
cc= 100.02

aa+bb=cc risulta falso, contro la mia logica
infatti
aa+bb dà 100.02000000000001

come faccio a comparare in modo elegante numeri (non necessariamente double) con due o tre cifre decimali?

... non mi ci trovo più con questi linguaggi "moderni", scusate :)
aaa
12/09/09 18:17
r0gerblack
Pare che sia molto difficile risponderti, non puoi spiegarti meglio e mettendo il codice nei tag [CODE][/CODE]?
aaa
12/09/09 18:35
ruggy94
Postato originariamente da haw:
... non mi ci trovo più con questi linguaggi "moderni", scusate :)

E si vede :D
Innanzitutto Val() è una funzione del VB6, e perciò è scorretto utilizzarla. Per convertire una stringa (in questo caso TextBox2.Text) in un valore numerico, basta fare
TipoNumerico.Parse(Stringa)

nel tuo caso
Double.Parse(TextBox2.Text)

Prova a risolvere dopo che ti ho detto questo, e se non ci riesci spiegati un po' meglio :)
aaa
13/09/09 8:15
Il Totem
Usa Decimal anziché Double.
aaa
14/09/09 5:23
haw
Grazie della comprensione e dell'immediato aiuto
 Dim aa, bb, cc As Double
 aa = 100.01
 bb = 0.01
 cc = 100.02
 Debug.Print("")
 Debug.Print(aa + bb = cc)


dà infatti FALSE


Usando decimal dà TRUE.
Dim aa, bb, cc As Decimal
 aa = 100.01
 bb = 0.01
 cc = 100.02
 Debug.Print("")
 Debug.Print(aa + bb = cc)


spero che questo risolva tutti i miei problemi.
in ogni caso grazie anche del Parse, che non conoscevo e che userò adesso nel mio codice.
Grazie ancora, siete stati gentilissimi.:k:




aaa