我发现在某些情况下,MATLAB会打印负-0.0作为轴刻度。我该怎样消除这个?
问题代码
y = linspace(-.4,.3,100);
plot(y)
ax = gca();
ax.YAxis.TickLabelFormat = '%.1f'`
此代码生成类似this的图表,而不是零刻度读取' 0.0'它读作' -0.0'。
我认为这里的关键是Y轴的最大值和最小值之间的间隔不能完全表示为浮点数,因此“零”' tick实际上位于-5.6e-17。如果改为使用格式ax.YAxis.TickLabelFormat = '%.1e'
对于挑剔的格式化原因,我真的更喜欢我的所有轴刻度具有相同的位数(即-0.1,0.0,0.1而不是-0.1,0,0.1)。有没有办法消除这种格式中的负零?
在MacOS Sierra 10.12.4上使用MATLAB2017a
答案 0 :(得分:0)
您选择浮点格式,您可以使用floating point accuracy issues获得所需内容。您可以定义y = linspace(-.4,.3,100)+eps;
来解决它......