Dla aplikacji C, którą implementuję, potrzebuję móc odczytać i zapisać zestaw wartości konfiguracyjnych do pliku. Te wartości są liczbami zmiennoprzecinkowymi. W przyszłości jest możliwe, że inna aplikacja (może być napisana w C++, Pythonie, Perlu, itp.) Użyje tych samych danych, więc te wartości konfiguracyjne muszą być przechowywane w dobrze zdefiniowanym formacie, który jest niezależny od kompilatora i maszyny .Przechowywanie liczb zmiennoprzecinkowych w pliku
Do konwersji endianizmu można użyć funkcji konwersji kolejności bajtów (ntoh/hton
), ale jaki jest najlepszy sposób na obejście różnych znaczeń wartości "zmiennoprzecinkowych"? Czy istnieje typowa metoda przechowywania float? Zaokrąglanie i obcinanie nie stanowi problemu, tak długo, jak jest zdefiniowane.
Najlepszy sposób przechowywania wartości zmiennoprzecinkowej (lub dowolnej wartości), niezależnej od platformy, jest w formie tekstowej. Przechowywanie w formie binarnej nie będzie działać, a korzystanie z funkcji endianess nie pomoże, ponieważ nie ma zdefiniowanej dla binarnych reprezentacji wartości zmiennoprzecinkowych. –
@JoachimPileborg Chociaż może nie być standardowej zdefiniowanej endianness dla binarnych reprezentacji zmiennoprzecinkowych, łatwo wymusić je samemu. Wszystko, co musisz zrobić, to dekretować, że wartości zmiennoprzecinkowe są przechowywane w, powiedzmy, dużym formacie endian. –
Możesz użyć standardowego typu, takiego jak IEEE754 podwaja – SheetJS