Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Problema stupido... non fa la somma
Forum - C# / VB.NET - Problema stupido... non fa la somma - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 21:23
Lunedì, 26/10/2009
Fino ad un certo punto ...

Ti consiglio nuovamente di studiare sui libri prima di avventurarti nella "pratica", altrimenti, e questa e' la dimostrazione, avrai bisogno sempre di chi ti spieghi le nozioni di "base" ... e non sempre lo troverai.

PM Quote
Avatar
carmines92 (Normal User)
Pro


Messaggi: 83
Iscritto: 10/04/2007

Segnala al moderatore
Postato alle 21:27
Lunedì, 26/10/2009
oky grazie del consiglio ;) studierò sui libri, cercherò su google ecc... ;) grazie 1000

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 18:17
Martedì, 27/10/2009
Read legge un carattere dallo standard input, ma restituisce un intero. Quindi tu non stai leggendo un intero, ma un carattere (questo è la causa del fraintendimento, anche se avresti dovuto leggere almeno la descrizione). Se il numero immesso è di più cifre, vengono lette le prime due come caratteri e i codici ascii corrispondenti posti in a e b; se il primo numero è di una cifra, comunque viene letto anche l'invio ed entrambe vengono inizializzate.
ReadLine, al contrario, legge una stringa terminata da un inivio, e questa può essere convertita in intero o in decimale.

Mi domando, tuttavia, perchè il programma ti si chiudesse all'inizio e non, invece, dopo l'aggiunta readline. Infatti, o lo hai eseguito da shell - ed in questo caso anche la prima volta sarebbe dovuto andare, visualizzando un risultato sbagliato - oppure lo hai eseguito dall'IDE o dal sistema operativo - ed in questo caso si sarebbe dovuto chiudere anche la seconda volta perchè non l'hai "fermato".

Colgo l'occasione per una domanda. In c#, la conversione con l'operatore parentesi (tipo) equivale al CType di VB.NET? Perchè in questo caso sarebbe meglio usare quello: Convert è piuttosto stupido e, ad esempio, non riesce a convertire in intero la stringa "1.000" (mille).

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 19:09
Martedì, 27/10/2009
Beh, Convert non e' proprio stupido ...

Codice sorgente - presumibilmente VB.NET

  1. Dim dblProvider As NumberFormatInfo
  2.  
  3.         dblProvider = New NumberFormatInfo
  4.         dblProvider.NumberDecimalSeparator = ","
  5.         dblProvider.NumberGroupSeparator = "."
  6.         dblProvider.NumberGroupSizes = New Integer() {3}
  7.  
  8.         Dim v As Double
  9.  
  10.         v = Convert.ToDouble("1.000", dblProvider)


PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 10:31
Mercoledì, 28/10/2009
Testo quotato

Postato originariamente da theprogrammer:

Beh, Convert non e' proprio stupido ...

Codice sorgente - presumibilmente VB.NET

  1. Dim dblProvider As NumberFormatInfo
  2.  
  3.         dblProvider = New NumberFormatInfo
  4.         dblProvider.NumberDecimalSeparator = ","
  5.         dblProvider.NumberGroupSeparator = "."
  6.         dblProvider.NumberGroupSizes = New Integer() {3}
  7.  
  8.         Dim v As Double
  9.  
  10.         v = Convert.ToDouble("1.000", dblProvider)




Emh... già, mi ero scordato del provider, ma tu stai convertendo in double, e non in intero. E comunque ho controllato, l'operatore di cast () si rifiuta di convertire stringhe in interi, forse perchè si tratta di parsing e non di proiezione. Quindi non esiste qualcosa di simile al CType, che effettua comunque la conversione anche da stringa e anche comprendendo tutti i separatori decimali e di migliaia?
Codice sorgente - presumibilmente C# / VB.NET

  1. Dim I As Int32 = CType("76.000,56", Int32) '>76001


PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo