0
我想將浮點數保存在一個二進制文件中,然後讀取它們以供進一步處理。不幸的是,fwrite和之後的fread確實會改變這個數字。fread和matlab中的fwrite不準確
下面這個簡單的例子:
% Number to store
A = 0.123456789101112
% Generate and open txt file
fid = fopen('test_fread.txt','w','b');
% write A into test_fread.txt
fwrite(fid,A,'float32');
% close file
fclose(fid)
% open txt file
fid = fopen('test_fread.txt','r','b');
% read the file
fread(fid,'float32')
ans = 0.123456791043282
答案是比輸入不同。我怎樣才能解決這個問題?我應該搜索什麼?它是四捨五入,精確還是其他問題?
32位浮點數[只有6-9精度的十進制](https://en.wikipedia.org/wiki/Single-precision_floating-point_format)。如果您需要更高的精度,一個選項是乘以10的已知功率,並將該值保存爲適當大小的整數,但要注意MATLAB的默認數據類型「double」只有15-17個重要的十進制數字。 – excaza