+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Problemi con cifre decimali

  1. #1
    gnappi non  in linea Novello
    Il mio sistema quello tipico italiano (separatore di decimali la virgola, separatore di migliaia il punto)
    Le istruzioni :
    Dim Virgola as byte = Asc(System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator)  e
    dim Punto as byte = Asc(System.Globalization.NumberFormatInfo.CurrentInfo.NumberGroupSeparator)
    
    mi restituiscono infatti 44 e 46 .
    Ora, ho una vasta tabella Access contenente molti valori numerici per ogni riga del tipo
    12,3 nel campo x1
    5,2 nel campo x2
    6,44 ,ecc.

    Effettuo una somma di questi valori cos : Dim TOTALE AS double = cdbl(campox1) + cdbl(campox2),ecc.
    Mi segnale una eccezione del tipo :una stringa non convertibile in double.

    La somma mi viene effettuata solo dopo che ha sostituito in ciascun campo la virgola con il punto.

    E' normale o sbaglio qualcosa?
    Grazie.

  2. #2
    L'avatar di _alka_
    _alka_ non  in linea Very Important Person
    Io semplificherei la conversione creando innanzitutto una istanza della classe CultureInfo, che ti permette di definire con quale convenzione internazionale lavorare nel parsing del valore con la virgola, se contenuto in una stringa:
    var itCulture = new CultureInfo("it-IT");
    
    Dopodich, chiama il metodo Decimal.Parse() per eseguire le conversioni, specificando il valore stringa da convertire e la cultura da utilizzare.
    var valueX1 = Decimal.Parse(campox1, itCulture);
    
    Se una delle chiamate non va a buon fine e ti segnala un errore, probabilmente c' un campo contenente un valore errato o non convertibile.

    Abilita lo stop sulle eccezioni durante il debugging e verifica qual il valore che stai tentando di convertire.

    Ciao!
    ℹ️ Leggi di pi su _alka_ ...

  3. #3
    gnappi non  in linea Novello
    Grazie per la tua risposta e per la tua soluzione.


    Ho fatto questa prova,utilizzando gli stessi dati ortiginari:
            Dim myCI As New CultureInfo("it-IT", False)
    
            Dim conf = Decimal.Parse(QconfTextBox.Text, myCI)
            Dim fn = Decimal.Parse(QfednazTextBox.Text, myCI)
            Dim fp = Decimal.Parse(QfpTextBox.Text, myCI)
            Dim fr = Decimal.Parse(QfrTextBox.Text, myCI)
            Dim ut = Decimal.Parse(QutTextBox.Text, myCI)
            Dim varie = Decimal.Parse(QvarieTextBox.Text, myCI)
            Me.totale.Text = conf + fn + fp + fr + ut + varie
    
    Il fatto che la tua soluzione funzione perfettamente sulle due prime variabili, ma mi da errore sulle successive ("Formato della stringa di input non corretto.").Ho controllato e ricontrollato.Tutto formalmente corretto.
    Che mai sara?!

  4. #4
    gnappi non  in linea Novello
    Quote Originariamente inviato da gnappi Visualizza il messaggio
    Grazie per la tua risposta e per la tua soluzione.


    Ho fatto questa prova,utilizzando gli stessi dati ortiginari:
            Dim myCI As New CultureInfo("it-IT", False)
    
            Dim conf = Decimal.Parse(QconfTextBox.Text, myCI)
            Dim fn = Decimal.Parse(QfednazTextBox.Text, myCI)
            Dim fp = Decimal.Parse(QfpTextBox.Text, myCI)
            Dim fr = Decimal.Parse(QfrTextBox.Text, myCI)
            Dim ut = Decimal.Parse(QutTextBox.Text, myCI)
            Dim varie = Decimal.Parse(QvarieTextBox.Text, myCI)
            Me.totale.Text = conf + fn + fp + fr + ut + varie
    
    Il fatto che la tua soluzione funzione perfettamente sulle due prime variabili, ma mi da errore sulle successive ("Formato della stringa di input non corretto.").Ho controllato e ricontrollato.Tutto formalmente corretto.
    Che mai sara?!
    P.S. : ho risolto mettendo il tutto in un try -catch. Grazie mille.

  5. #5
    L'avatar di sistemista
    sistemista non  in linea Topo di biblioteca
    Boh...io non ho parole...te le canti e te la suoni da te...e poi cosa c'entra il try catch se il codice lo stesso che hai postato prima?
    ℹ️ Leggi di pi su sistemista ...

  6. #6
    L'avatar di _alka_
    _alka_ non  in linea Very Important Person
    Quote Originariamente inviato da gnappi Visualizza il messaggio
    P.S. : ho risolto mettendo il tutto in un try -catch. Grazie mille.
    In quel modo non risolvi: semplicemente, prendi l'errore, lo infili in bocca, lo mandi gi ed come non fosse successo niente, ma magari quell'eccezione comunicava qualcosa che avrebbe dovuto essere preso in considerazione.
    ℹ️ Leggi di pi su _alka_ ...

  7. #7
    gnappi non  in linea Novello
    Quote Originariamente inviato da _alka_ Visualizza il messaggio
    In quel modo non risolvi: semplicemente, prendi l'errore, lo infili in bocca, lo mandi gi ed come non fosse successo niente, ma magari quell'eccezione comunicava qualcosa che avrebbe dovuto essere preso in considerazione.
    Hai perfettamente ragione.Mi sono incartato.Infatti, non funziona.

  8. #8
    gnappi non  in linea Novello
    Quote Originariamente inviato da _alka_ Visualizza il messaggio
    In quel modo non risolvi: semplicemente, prendi l'errore, lo infili in bocca, lo mandi gi ed come non fosse successo niente, ma magari quell'eccezione comunicava qualcosa che avrebbe dovuto essere preso in considerazione.
    Mi sono accorto che l'errore viene provocato dal seguente codice:
        Private Sub QconfTextBox_TextChanged(sender As Object, e As EventArgs) Handles QconfTextBox.TextChanged, QfednazTextBox.TextChanged, ecc.
    
    che utilizzavo per aggiornare il totale alla modifica di una qualsiasi textbox.
    Grazie ancora per avermi aiutato.

  9. #9
    L'avatar di Brontolo
    Brontolo non  in linea Very Important Person
    Gnappi, io ho dei forti dubbi che quella sia la linea che provoca l'errore. Tra l'altro sembra incompleta.
    Come hai fatto ad individuarla?
    ℹ️ Leggi di pi su Brontolo ...

  10. #10
    L'avatar di _alka_
    _alka_ non  in linea Very Important Person
    Quote Originariamente inviato da gnappi Visualizza il messaggio
    Mi sono accorto che l'errore viene provocato dal seguente codice [...]
    che utilizzavo per aggiornare il totale alla modifica di una qualsiasi textbox.
    Sicuramente non si tratta della parte di codice che hai postato visto che una dichiarazione e quindi rappresenta un elemento strutturale, non eseguibile. Tutt'al pi sar una istruzione all'interno, ma non l'hai riportata.
    ℹ️ Leggi di pi su _alka_ ...

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. cifre decimali esatte
    Da CESABAS nel forum Microsoft Access
    Risposte: 2
    Ultimo Post: 06-05-2019, 09:51
  2. Cifre decimali
    Da Rochy Joe nel forum Microsoft Excel
    Risposte: 2
    Ultimo Post: 07-03-2018, 17:45
  3. Problema cifre decimali
    Da Mitchdiuk nel forum C/C++
    Risposte: 1
    Ultimo Post: 06-04-2010, 17:50
  4. Approssimazione cifre decimali
    Da newpc82 nel forum Visual Basic 6
    Risposte: 1
    Ultimo Post: 05-10-2006, 19:01
  5. textbox e cifre decimali
    Da Master85 nel forum Visual Basic 6
    Risposte: 4
    Ultimo Post: 19-05-2004, 11:05