Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [vb.net] comparazione ed errore arrotondamento VAL
Forum - C# / VB.NET - [vb.net] comparazione ed errore arrotondamento VAL

Avatar
haw (Normal User)
Newbie


Messaggi: 3
Iscritto: 12/09/2009

Segnala al moderatore
Postato alle 10:11
Sabato, 12/09/2009
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 :)

PM Quote
Avatar
r0gerblack (Ex-Member)
Pro


Messaggi: 70
Iscritto: 04/08/2008

Segnala al moderatore
Postato alle 20:17
Sabato, 12/09/2009
Pare che sia molto difficile risponderti, non puoi spiegarti meglio e mettendo il codice nei tag
Codice sorgente - presumibilmente Plain Text

  1. Codice sorgente - presumibilmente Plain Text



?

PM Quote
Avatar
ruggy94 (Member)
Guru


Messaggi: 890
Iscritto: 21/04/2008

Segnala al moderatore
Postato alle 20:35
Sabato, 12/09/2009
Testo quotato

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
Codice sorgente - presumibilmente Plain Text

  1. TipoNumerico.Parse(Stringa)


nel tuo caso
Codice sorgente - presumibilmente Plain Text

  1. Double.Parse(TextBox2.Text)


Prova a risolvere dopo che ti ho detto questo, e se non ci riesci spiegati un po' meglio :)


"Se vuoi che una funzione di un programma non venga mai trovata, descrivila nella documentazione"
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 10:15
Domenica, 13/09/2009
Usa Decimal anziché Double.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
haw (Normal User)
Newbie


Messaggi: 3
Iscritto: 12/09/2009

Segnala al moderatore
Postato alle 7:23
Lunedì, 14/09/2009
Grazie della comprensione e dell'immediato aiuto
Codice sorgente - presumibilmente C# / VB.NET

  1. Dim aa, bb, cc As Double
  2.  aa = 100.01
  3.  bb = 0.01
  4.  cc = 100.02
  5.  Debug.Print("")
  6.  Debug.Print(aa + bb = cc)



dà infatti FALSE


Usando decimal dà TRUE.
Codice sorgente - presumibilmente C# / VB.NET

  1. Dim aa, bb, cc As Decimal
  2.  aa = 100.01
  3.  bb = 0.01
  4.  cc = 100.02
  5.  Debug.Print("")
  6.  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:





PM Quote