跟随这个问题,我正在研究Matlab中双变量的精度。 在那里,建议使用fprintf更仔细地查看变量。
奇怪的是,变量编辑器和fprintf显示的结果不同,fprintf显示的结果多一位。
% pi
Variable Editor: 3.141592653589793
fprintf('0.16f
',pi): 3.1415926535897931
vpa('pi'): 3.1415926535897932384626433832795
% pi / 180
pi180 = pi/180
Variable Editor (pi180) 0.017453292519943
fprintf('%0.16f
',pi180) 0.0174532925199433
vpa('pi/180') 0.017453292519943295769236907684886
在内部,Matlab似乎在以fprintf打印的精度工作
>> fprintf('%0.16f
',0.0174532925199433*10) % value from fprintf
0.1745329251994330
>> fprintf('%0.16f
',0.017453292519943*10) % value from Variable Editor
0.1745329251994300
>> fprintf('%0.16f
',pi180*10) % internal calculation
0.1745329251994330
为什么会这样?
如果在函数中使用预先计算的pi/180,是否应该使用fprintf或变量编辑器中的值?
tl; dr在变量编辑器中,Matlab截断了15位而不是16位。
我已经通过双击变量编辑器访问了变量。 这样,与指定的short格式相比,显示的位数更多。 AFAIK无法更改"双击输出"的精度。
tl; dr MATLAB中的变量使用双精度