Per un'applicazione C che sto implementando, devo essere in grado di leggere e scrivere un set di valori di configurazione in un file. Questi valori sono numeri in virgola mobile. In futuro è possibile che un'altra applicazione (che potrebbe essere scritta in C++, Python, Perl, ecc ...) utilizzi questi stessi dati, quindi questi valori di configurazione devono essere memorizzati in un formato ben definito che sia indipendente dal compilatore e dalla macchina .Memorizzazione di numeri in virgola mobile in un file
Le funzioni di conversione dell'ordine byte (ntoh/hton
) possono essere utilizzate per gestire l'endianità, tuttavia qual è il modo migliore per aggirare i diversi significati del valore "float"? C'è un metodo comune per immagazzinare i galleggianti? Arrotondare e troncare non è un problema, purché sia definito.
Il modo migliore per memorizzare un oggetto mobile (o qualsiasi altro valore), indipendente dalla piattaforma, è in forma di testo. Archiviandolo in formato binario non funzionerà, e l'uso di funzioni di endianess non sarà di aiuto in quanto non è definito alcun endianess per le rappresentazioni binarie di valori in virgola mobile. –
@JoachimPileborg Anche se non ci può essere endianness definita standard per le rappresentazioni in virgola mobile binario, è abbastanza facile imporne uno da solo. Tutto quello che devi fare è decretare che i valori in virgola mobile sono memorizzati, ad esempio, in formato big endian. –
È possibile utilizzare un tipo standard come IEEE754 raddoppia – SheetJS