View Full Version : [c] formato double
Ciao hw-dipendenti,
ho un problema che mi si ripresenta spesso... Lavoro in C e compilo con gcc di cygwin: ho il problema che mi ritrovo a smanettare con double che hanno come separatore decimale la virgola e quindi non leggibi con fprintf(f1,"%f"...)
C'è qualcosa che posso impostare all'inizio del mio file in C che gli faccia capire qual'è lo standard dei double sull'attuale s.o.?
cipi
Per il momento ho risolto così ma vorrei vedere se si può fare richiamando dei parametri di winzoz...
for(j=0;j<=strlen(sVariables[i]);j++)
{
ch=sVariables[i][j];
if(ch==',') sVariables[i][j]='.';
}
dblVariables[j]=atof(sVariables[i]);
dove sVariables è un array di stringhe, dblVariables è un array di float e ch, ovviamente, è un char....
Attendo vostre nuove!
cipi :)
la funzione strchr ricerca un carattere in una stringa e restituisce il puntatore a quel carattere
puoi provare una cosa del tipo *strchr(stringa,',')='.'
magari inserisci anche
# define converti(AA,BB) *strchr(AA,',')='.'; bb=atof(AA);
... o qualcosa di simile ....così la puoi utilizzare meglio
ilsensine
12-07-2004, 14:08
#include <locale.h>
setlocale(LC_ALL, "it_IT");
Questo sotto linux richiede i pacchetti di localizzazione "locales" e "locales-it"; non ho idea di come è implementato sotto windows/cygwin.
Originariamente inviato da RAISE
la funzione strchr ricerca un carattere in una stringa e restituisce il puntatore a quel carattere
puoi provare una cosa del tipo *strchr(stringa,',')='.'
magari inserisci anche
# define converti(AA,BB) *strchr(AA,',')='.'; bb=atof(AA);
... o qualcosa di simile ....così la puoi utilizzare meglio
Grazie... ma il prblema rimane.... anche come ho scritto io funziona... era solo la curiosità di andare a pescare qualcosa come suggerisce ilsensine...l
Originariamente inviato da ilsensine
#include <locale.h>
setlocale(LC_ALL, "it_IT");
Questo sotto linux richiede i pacchetti di localizzazione "locales" e "locales-it"; non ho idea di come è implementato sotto windows/cygwin.
Grazie ilsensine, ora provo e poi posto... magari torna utile ad altri!
Originariamente inviato da RAISE
la funzione strchr ricerca un carattere in una stringa e restituisce il puntatore a quel carattere
puoi provare una cosa del tipo *strchr(stringa,',')='.'
magari inserisci anche
# define converti(AA,BB) *strchr(AA,',')='.'; bb=atof(AA);
... o qualcosa di simile ....così la puoi utilizzare meglio
però devo dire che è carino quel define... ;)
Originariamente inviato da cipi
Grazie ilsensine, ora provo e poi posto... magari torna utile ad altri!
Ho provato di tutto... ho fin aggiornato gcc (gcc version 3.3.1 (cygming special)) e in fase di compilazione non mi da problemi ma se scrivo
setlocale(LC_ALL, "it_IT.ISO-8859-1");
printf(setlocale(LC_ALL,""));
mi risponde sempre C (che è quello preimpostato, no?)
Ora, qualcuno ha qualche idea?
ilsensine
13-07-2004, 10:57
Le libc caricano le definizioni dei "locale" da un database apposito. Sotto linux questo database è composto da uno o più pacchetti che vengono installati in fase di installazione del sistema operativo.
Prova a rieseguire il setup di cygwin, e a cercare e installare eventuali pacchetti il cui nome inizia con "locale".
Nota infine che per richiedere il locale corrente, devi chiamare setlocale(..., NULL), non setlocale(..., "").
Originariamente inviato da ilsensine
Le libc caricano le definizioni dei "locale" da un database apposito. Sotto linux questo database è composto da uno o più pacchetti che vengono installati in fase di installazione del sistema operativo.
Prova a rieseguire il setup di cygwin, e a cercare e installare eventuali pacchetti il cui nome inizia con "locale".
Nota infine che per richiedere il locale corrente, devi chiamare setlocale(..., NULL), non setlocale(..., "").
Ho tutti i pacchetti installati... ho sistemato l'errore, grazie... ma niente! :cry:
Pazienza.... ;) :rolleyes: :(
Originariamente inviato da cipi
Ciao hw-dipendenti,
ho un problema che mi si ripresenta spesso... Lavoro in C e compilo con gcc di cygwin: ho il problema che mi ritrovo a smanettare con double che hanno come separatore decimale la virgola e quindi non leggibi con fprintf(f1,"%f"...)
C'è qualcosa che posso impostare all'inizio del mio file in C che gli faccia capire qual'è lo standard dei double sull'attuale s.o.?
cipi
la virgola come separatore decimale è morta.
pace all'anima sua.
sopravvive solo in pochi esemplari in deriva genetica (i.e. trombano tra parenti) in qualche provincia sperduta e culturalmente arretrata.
anzi l'uso della sgorbia come separatore decimale può essere usato come test di sottosviluppo. :D
ma anche quando era viva non costituiva (e non costistuisce) comunque problema in contesti civilizzati. :D :cool:
P.S.
punto solo punto: in basso come separatore decimale, in alto come separatore di migliaia.
ilsensine
13-07-2004, 15:04
Originariamente inviato da a2000
P.S.
punto solo punto: in basso come separatore decimale, in alto come separatore di migliaia.
mmm ok, ma non trovo sulla tastiera il punto in alto :D
Originariamente inviato da a2000
la virgola come separatore decimale è morta.
pace all'anima sua.
sopravvive solo in pochi esemplari in deriva genetica (i.e. trombano tra parenti) in qualche provincia sperduta e culturalmente arretrata.
anzi l'uso della sgorbia come separatore decimale può essere usato come test di sottosviluppo. :D
ma anche quando era viva non costituiva (e non costistuisce) comunque problema in contesti civilizzati. :D :cool:
P.S.
punto solo punto: in basso come separatore decimale, in alto come separatore di migliaia.
Fosse vero.... Sarebbe morto anche winzoz... Purtroppo, pur d'accordo con te, si è costretti a creare programmi flessibili... E per me questo rappresenta lo sforzo più grande :(
Originariamente inviato da ilsensine
mmm ok, ma non trovo sulla tastiera il punto in alto :D
è infatti c'hai la tastiera arretrata .... :p
ilsensine
13-07-2004, 15:24
Originariamente inviato da a2000
è infatti c'hai la tastiera arretrata .... arretrato ! :p
No basta girarla al contrario :fuck:
comunque dovresti sapere, ammesso che tu faccia un minimo di calcolo scientifico (?) , che i numeri si scrivono sempre con mantissa ed esponente. :)
vai tranquillo solo punto.
il resto è provincia. :D
Originariamente inviato da cipi
Ciao hw-dipendenti,
ho un problema che mi si ripresenta spesso... Lavoro in C e compilo con gcc di cygwin: ho il problema che mi ritrovo a smanettare con double che hanno come separatore decimale la virgola e quindi non leggibi con fprintf(f1,"%f"...)
C'è qualcosa che posso impostare all'inizio del mio file in C che gli faccia capire qual'è lo standard dei double sull'attuale s.o.?
cipi
Fan***o il gcc di cygwin... sono passato a MinGW... Mejo, molto mejo!
La risposta di prima era la n. 17 e così.... ecco la risposta 18
:tie: :sperem: :D :D :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.