我在 matlab 中有一个双精度数组,其元素以十六进制格式输出到文件中。我想输出它没有小数位,当输出的值为负数时,我似乎无法弄清楚如何做到这一点。我试过:
>> A = ones(1,4);
>> fid = fopen('test.txt', 'r');
>> value = A(2);
>> fid = fopen('test.txt', 'w');
>> fprintf(fid,'%xrn', value);
>> fprintf(fid,'%.0xrn', value);
>> value = -value;
>> fprintf(fid,'%.0xrn', value);
>> fprintf(fid,'%0.0xrn', value);
>> fprintf(fid,'%0.0xrn', value);
>> fprintf(fid,'%1.0xrn', value);
>> fprintf(fid,'%xrn', value);
输出文件如下所示:
1
1
-1e+000
-1e+000
-1e+000
-1e+000
-1.000000e+000
我真的只是希望它能够打印出"-1";
抱歉,如果这很明显,但很难找到这些信息,因为有这么多不同的格式。
您是否尝试过将value = -value;
更改为value = round(-value);
?
或者,仅输出绝对值,但如果值为负数,则在前面加上"-":
if value < 0,
fprintf('-%x', abs(value));
else
fprintf('%x', abs(value));
end