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