Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: xinyiman - Ottobre 17, 2016, 03:50:54 pm

Titolo: Domanda conversione
Inserito da: xinyiman - Ottobre 17, 2016, 03:50:54 pm
Ciao ragazzi, una domanda, se da un file csv ho una stringa così 9.442911E+01 secondo voi qual'è il miglior modo di trasformarlo in un numero leggibile senza perdere di precisione?
Titolo: Re:Domanda conversione
Inserito da: nomorelogic - Ottobre 17, 2016, 06:59:03 pm
con cosa lo apri il csv, con un foglio elettronico o con un editor di testo?

se apri con un foglio elettronico, puoi evitare di avere i numeri con la notazione scientifica formattando la colonna

se invece il file csv lo apri con un editor di testo, puoi usare questa funzione
http://www.freepascal.org/docs-html/rtl/sysutils/formatfloat.html (http://www.freepascal.org/docs-html/rtl/sysutils/formatfloat.html)
Titolo: Re:Domanda conversione
Inserito da: Stilgar - Ottobre 18, 2016, 02:15:32 am
Scusa. Non ho capito bene.
Vuoi leggerla o scriverla quella stringa?
Cioè devi farne il parsing? Per scriverla penso basti il format...
Titolo: Re:Domanda conversione
Inserito da: Stilgar - Ottobre 18, 2016, 02:23:19 am
https://sourceforge.net/p/lazarusiug/liug/HEAD/tree/trunk/JavaUtils/src/system/SystemTypes.pas
Per il parsing c'è qualcosa qui. Prova a vedere 😊
Titolo: Re:Domanda conversione
Inserito da: xinyiman - Ottobre 18, 2016, 08:33:30 am
https://sourceforge.net/p/lazarusiug/liug/HEAD/tree/trunk/JavaUtils/src/system/SystemTypes.pas
Per il parsing c'è qualcosa qui. Prova a vedere 😊

Io quel dato lo devo leggere da un file csv
Titolo: Re:Domanda conversione
Inserito da: xinyiman - Ottobre 18, 2016, 10:44:23 am
Per farla semplice semplice, non basterebbe?


valore:=StrToFloat('9.331780E+01');

Self.Memo1.Text:=FormatFloat('#,##0.0000000000',valore);
Titolo: Re:Domanda conversione
Inserito da: Stilgar - Ottobre 18, 2016, 02:13:35 pm
Funziona? Allora sì. Non funziona? Allora no :) :p
Titolo: Re:Domanda conversione
Inserito da: xinyiman - Ottobre 18, 2016, 02:48:43 pm
Secondo quello che so io al riguardo l'esempio menzionato prima

9.331780E+01

dovrebbe equivalere a

93.31780

Quindi direi che funziona. Almeno se le mie nozioni matematiche non fanno acqua da tutte le parti
Titolo: Re:Domanda conversione
Inserito da: nomorelogic - Ottobre 18, 2016, 03:08:28 pm
la E sta ad indicare quante volte devi moltiplicare per 10 quindi il risultato è esatto