第一:
似乎sprintf和fprintf在不同版本的MATLAB上有不同的行为例如在MATLAB 2018中
num=2.7182818284590666666666;
sprintf('%0.70f', num)
ans =
'2.7182818284590668511668809514958411455154418945312500000000000000000000'
第二个:
浮点数字
MATLAB®以双精度或单精度格式表示浮点数。 默认值是双精度,但您可以使用简单的转换函数使任何数字单精度。
双精度浮点
MATLAB根据IEEE®Standard754构造双精度(或双精度)数据类型,以实现双精度。 存储为double的任何值都需要64位,格式如下表所示:
比特:63
用法:符号(0 =正,1 =负)
比特:62到52 用法:指数,偏向1023
比特:51比0 用法:数字1.f的分数f
有关详细信息,请参阅此链接
在252 = 4,503,599,627,370,496和253 = 9,007,199,254,740,992之间,可表示的数字正好是整数。 对于下一个范围,从253到254,一切都乘以2,所以可表示的数字是偶数,等等。相反,对于之前的范围从2 ^ 51到2 ^ 52,间距是0.5,等等。
作为2 ^ n到2 ^ n + 1范围内的数字的分数的间隔是2 ^ n-52