我想将数据存储到二进制文件中(精确'长' - 制造商的要求)但在读取另一个软件中的文件后,数字是四舍五入的。我发现当我尝试在MATLAB中读取该文件时,数字也是四舍五入的。小例子:
>> number=-3.913;
>> fid_out=fopen('test','wb');
>> fwrite(fid_out,number,'long');
>> fclose all;
>> fid_in=fopen('test','rb');
>> fread(fid_in,'long')
ans =
-4
对不起,我对二进制数类型不太熟悉。我想使用'long'的原因是外部软件数据解码器。我得到的信息只有这样:
一些线索?
答案 0 :(得分:1)
你得到四舍五入的数字是因为你正在使用long
编写和阅读,这是一个32位整数。要使其有效,您需要使用long
,double
等浮动类型替换float
。
number=-3.913;
fid_out=fopen('test','wb');
fwrite(fid_out,number,'double');
fclose all;
fid_in=fopen('test','rb');
fread(fid_in,'double')
你会得到:
ans =
-3.9130
修改:如果您必须使用long
,则可以先按照1000
这样的大比例对数字进行多次转换,使其成为long
,同时不要失去准确性。然后,当重新加载数据时,您可以通过进一步将它们除以相同的比例来获得原始值。