Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [VB.NET 2008] lavorare con formati diversi

    un questione che forse sarà semplice per molti di voi
    l'utente inserisce un valore numerico decimale in una casella di testo
    per es. 0,336 nella casella TextBox9.text
    successivamente io devo prendere quel valore e usarlo in una formula, quindi mi serve non come testo ma come valore decimale
    ho provato ad usare questo sistema
    codice:
    Dim RCR As Double         RCR = Val(TextBox1.Text)         TextBox9.Text = RCR
    poi la variabile RCR la rimetto in una casella di testo per farla leggere. PERç in questo caso visualizzo solo il valore 0

    mentre se uso questo sistema
    codice:
    Dim RCR As Double         RCR = TextBox1.Text         TextBox9.Text = Val(RCR)
    alla fine ottengo il valore 0,336.

    mi chiedo: ma non basta il comando Val per convertire una stringa in un numero?
    nel secondo codice invece mi pare un controsenso dare un Val ad una variabile che io ho già definito come "double"

    dove ho sbagliato?

  2. #2
    Leggi la documentazione:
    http://msdn.microsoft.com/en-us/library/9da280t0.aspx
    C'è scritto chiaramente:
    The Val function recognizes only the period (.) as a valid decimal separator. When other decimal separators are used, as in international applications, use CDbl or CInt instead to convert a string to a number. To convert the string representation of a number in a particular culture to a numeric value, use the numeric type's Parse(String, IFormatProvider) method. For example, use Double.Parse when converting a string to a Double.
    Quindi, poiché la virgola non viene riconosciuta, il parsing si ferma allo zero. In ogni caso, usare Val in .NET è un controsenso: VB2008 non è VB6. Usate CDouble, CType, Convert.ToDouble o Double.Parse.

    Nel secondo caso c'è un cast implicito. Scrivere:
    codice:
     RCR = TextBox1.Text
    equivale a:
    codice:
     RCR = CType(TextBox1.Text, Double)
    Allo stesso modo:
    codice:
    TextBox9.Text = Val(RCR)
    equivale a:
    codice:
    TextBox9.Text = Val(RCR.ToString()).ToString()
    Per rispondere alla tua domanda, Val(RCR) è perfettamente inutile (e anche un po' stupido).

  3. #3
    grazie, in effetti mi ero reso conto di questo, ho fatto confusione tra i vari VB di diversi periodi.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.