Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    21

    C# formato numeri in un' array

    Ciao a tutti,
    avrei bisogno di aiuto per risolvere un problema: il codice che ho scritto registra dei numeri in un array 2d. Come output crea un file .txt che contiene i numeri presenti nell'array.
    Ho realizzato quest'ultimo passaggio con i seguenti controlli:

    codice:
    FileStream stream = new FileStream("matrice.txt",FileMode.Create);
    			StreamWriter writer = new StreamWriter(stream);
    			
    			int i,j;
    			for(i=0;i<=200;i++)
    			{
    				writer.WriteLine();
    				for(j=0;j<=200;j++)
    				{
    					writer.Write(A[i,j]+"\t");
    				}
    			}
    			
    			writer.Close();
    			stream.Close();
    Il file generato è corretto, ma ho 2 problemi per poterlo poi aprire con Matlab:
    -vorrei che al posto della virgola ci fosse il punto...ma questo problema posso aggirarlo
    -vorrei evitare che i numeri venissero scritti in notazione scientifica (es: 0,4343E-5)

    grazie ciao
    Michele

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    I linguaggi .NET vengono trattati nel forum "Visual Basic e .NET Framework".
    Inoltre, come specificato nel Regolamento interno, il codice va postato indentato con l'utilizzo degli appositi tag (vedi punto 6).

    Sposto e sistemo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Per fare in modo che non venga utilizzata la notazione scentifica ma la notazione Decimale (per esempio) puoi fare in questo modo: ti riscrivo il codice con la modifica

    codice:
                            FileStream stream = new FileStream("matrice.txt",FileMode.Create);
    			StreamWriter writer = new StreamWriter(stream);
    			
    			int i,j;
    			for(i=0;i<=200;i++)
    			{
    				writer.WriteLine();
    				for(j=0;j<=200;j++)
    				{
    					writer.Write("{0: D4}"+"\t",A[i,j]);
    				}
    			}
    			
    			writer.Close();
    			stream.Close();
    le parentesi graffe hanno questo utilizzo: il primo numero dopo la parentesi graffa aperta è l'indice del valore che andrà a prendere dai parametri extra che gli hai passato, in questo caso:
    0 corrispende a A[i,j].
    i ": D4" vuol dire che si vuole scrivere il numero di indice 0 in notazione decimale, con 4 cifre
    spero possa esserti di aiuto

    N.B fra i ":" e "D4" non c'è nessuno spazio...ho dovuto mettercelo sennò veniva fuori sta faccina--->

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    21
    grazie mille!gentilissimo!
    Michele

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    21
    L'ho fatto e ora non mi scrive piu numeri in notazione exp.(perfetto!)
    Ma non con il numero di cifre decimali che voglio....qualsiasi numero io metta dopo la D ne mette sempre 14!!
    ....
    Michele

  6. #6
    Originariamente inviato da bonz32
    L'ho fatto e ora non mi scrive piu numeri in notazione exp.(perfetto!)
    Ma non con il numero di cifre decimali che voglio....qualsiasi numero io metta dopo la D ne mette sempre 14!!
    ....
    Facendo qualche prova ho potuto notare che non è il massimo scrivere in notazione decimale numeri che possono essere double
    se ti va bene ti consiglio di fare

    Console.Write("{0:F3}", Valore)

    in questo modo il valore viene scritto per intero con solo due cifre dopo la virgola...dimmi se te garba


  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    21
    Avevo gia provato ad usare F al posto di D...ma anche li mi scrive più cifre decimeli di quelle che vorrei!
    a te funziona??
    Michele

  8. #8
    no, purtroppo anche da me scrive tutte le cifre decimali... ok ti propongo un altra soluzione...potresti mettere il valore in una stringa...a quel punto puoi usare la stringa come un vettore stagliuzzando le parti che non ti interessano...ma sinceramente non è che abbia molta fiducia su sto metodo

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    21
    Mi hanno consigliato questa soluzione:

    codice:
    writer.Write(T_rat[i,j,k].ToString("000.00000",System.Globalization.CultureInfo.InvariantCulture)+"\t ");
    in questo modo a volte metto zeri di troppo ma pu andare bene...la seconda parte serve per mettere . invece che ,

    ciao e grazie mille!
    Michele

  10. #10
    metodo interessante, grazie a te per avermi messo al corrente^^

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.