Difficoltà con decimali Pi Greco

pfca

Nuovo Utente
5 Ago 2012
6
0
0
Buongiorno a tutto il Forum,
sono all'inizio e cerco da autodidatta, seguendo alcune guide internet di apprendere il VB 2010.
Sono partito dalla classica calcolatrice, visto un esempio con le quattro operazioni di base, ho cercato
di aggiungere altri button per inserire altre opzioni, tra cui le quattro operazioni di base e PI.
La mia difficoltà se pur facendo diverse prove non sono riuscito a superare è questa:
quando i calcoli coinvolgono Math.PI, la TextBox non mi visualizza i decimali, ma arrotondano all'unità.
Altri calcoli con decimali, vengono gestiti correttamente. Inserisco parte del codice interessato e sarei
grato a chi mi da indicazioni sull'errore che commetto.
Codice:
Dim Risultato1 As Double
Dim Risultato As Double

Private Sub Button19_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button19.Click
        'Valore Pi Greco
        TextBox1.Text = Math.PI
        Risultato1 = Val(TextBox1.Text)
End Sub



Private Sub Button16_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button16.Click
        segno = "*"
        Risultato = Val(Risultato1) + Val(TextBox1.Text)
        TextBox1.Text = Val(Risultato)
End Sub
Grazie
Francesco
 

Vins

Moderatore
Membro dello Staff
MOD
28 Lug 2009
238
19
0
Ciao Francesco e benvenuto,

il tuo problema deriva dall'utilizzo della funzione Val. Tale funzione infatti, se applicata ad una stringa, legge la stringa fino al primo carattere che non riconosce essere un numero.

Quindi nel tuo caso legge il valore 3,14159265358979 fino alla virgola (cioè solo fino a tre).

Se al posto della virgola metti il punto allora la funzione ti leggerà anche i decimali.

Puoi dare un'occhiata a questo link

http://msdn.microsoft.com/en-us/library/k7beh1x9(v=vs.71).aspx
 

pfca

Nuovo Utente
5 Ago 2012
6
0
0
Ciao Vins e grazie per la risposta, io avevo già provato con CDbl ma il risultato non andava.
Domanda tu dici:
Se al posto della virgola metti il punto allora la funzione ti leggerà anche i decimali.
Dovrei dichiarare una variabile con valore 3.14159265358979 ed utilizzare quella?
Oppure rivedere tutto il codice?
Grazie
Francesco
 

Vins

Moderatore
Membro dello Staff
MOD
28 Lug 2009
238
19
0
Ti dicevo il fatto del punto come esempio di simbolo riconosciuto dalla funzione Val.

Nel tuo caso basta modificare il codice nel modo seguente, utilizzando proprio CDbl

Codice:
Dim Risultato1 As Double
Dim Risultato As Double

Private Sub Button19_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button19.Click
        'Valore Pi Greco
        TextBox1.Text = Math.PI
        Risultato1 = CDbl(TextBox1.Text)
End Sub



Private Sub Button16_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button16.Click
        segno = "*"
        Risultato = Risultato1 + CDbl(TextBox1.Text)
        TextBox1.Text = Risultato
End Sub
Ciao