Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    31

    Problema con numeri double nella textbox

    Ciao a tutti,
    stavo creando un programma che deve eseguire alcuni calcoli ma mi sono imbattuto in un errore....
    il codice del programma è il seguente:
    codice:
    TextBox2.Text = TextBox1.Text / "1000"
    Nel codice non sono presenti errori, ma l'errore me lo da nell'output. Se io scrivo nel TextBox1 "3", nel TextBox2 mi uscirà scritto "0,003" che è giusto. Ma se io nel TextBox1 scrivo "0,003" nel TextBox2 mi esce scritto "3E-06"
    il perchè di quella scritta (che non è neanche un errore) l'ho capito.... il programma per non scrivere 0,000003 scrive semplicemente 3E-06 (si capisce che con 06 intende che ci sono 6 zeri che in effetti è vero). La mia domanda è la seguente... come posso far scrivere al programma, il numero per esteso?
    io penso che basti convertire il contenuto della TextBox2 da string a double ma non so come si fa e se è giusto

  2. #2
    Ugh, il solo fatto che quel codice funziona mi fa accapponare la pelle... Te la cavi solo perché VB.NET ti sta facendo un milione di cast impliciti di nascosto, ma evita, è pessimo stile di programmazione.

    TextBox1.Text è una stringa, per cui per dividerla per qualcosa la devi prima convertire in un numero (di tipo Double nel tuo caso), cosa che puoi fare con Double.Parse. Quindi tieni 1000 come numero (e non come stringa) ed effettui la divisione. A questo punto hai un Double, che puoi convertire in stringa e formattare come ti pare con il suo metodo ToString, per poi assegnarlo a TextBox2.Text.

    In sintesi,
    codice:
    TextBox2.Text = (Double.Parse(TextBox1.Text)/1000.).ToString("R")
    (dove R specifica - di fatto - di scrivere tutte le cifre decimali che ci sono)
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    119
    In vb.net devi fare la conversione tra testo e decimale (non double) e viceversa per riottenere la stringa applicando un formato alla stringa.
    Tra l'altro se tu avessi messo "option strict on" sui setting del programma avresti già ottenuto e forse affrontato il problema delle conversioni di tipo.

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Originariamente inviato da Skell
    stavo creando un programma che deve eseguire alcuni calcoli ma mi sono imbattuto in un errore....
    Manca il linguaggio nel titolo, obbligatorio come da Regolamento.

    Di quale versione di Visual Basic stiamo parlando?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    31
    si scusa alka mi sono scordato di scriverlo. utilizzo visual basic 2010 ultimate edition.
    MItaly ho provato con il tuo codice ma il numero mi viene sempre restituito come "3E-06"

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Prova

    codice:
    textBox2.Text = (Double.Parse(textBox1.Text)/1000.0).ToString("F99").TrimEnd("0".ToCharArray());
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    31
    Grazie oregon il codice funziona alla perfezione (il ";" alla fine in visual basic non ci vuole )
    grazie comunque a tutti!!!

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Skell
    Grazie oregon il codice funziona alla perfezione (il ";" alla fine in visual basic non ci vuole )
    grazie comunque a tutti!!!
    Sì ... è codice C# ... ma è uguale ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.