嗨,在调用这个代码(八度)后,我得到了一个7位精度的答案,我只需要6位。值得一提的是,在不同的数据集上,输出是正常的(6位);
output_precision(6);
Prev产出:
Prev =
0.1855318
0.2181108
0.1796457发布于 2019-03-08 05:58:09
我知道这有点晚了,但我想为将来有同样问题的人补充一个答案。
根据功能参考 for output_precision(),传递给函数的参数(在本例中为6)指定了重要数字的最小数量,这只能保证未来的数字输出不会少于该重要数字数。
据我所见,如果在显示数组之前使用output_precision(new_val) (例如,问题中的Prev ),那么八度将在小数位之前用最少的数字舍入元素,使其具有new_val显着数字,然后所有其他元素都会四舍五入,在十进制后的数字数与最初的四舍五入结果相同。如果使用语句输出单个值而不是数组,则输出将被舍入为new_val显着数字。但是,--我不知道这种行为是否得到的保证。
这里有一个简短的例子来说明我的意思:
% array defined with values having 5 digits after decimal
F = [401.51670 313.70753 -88.55225 188.50067 280.21988 354.51821 54.51821 350];
output_precision(4)
F
output_precision(6)
F输出:
F =
401.52 313.71 -88.55 188.50 280.22 354.52 54.52 350.00
F =
401.5167 313.7075 -88.5523 188.5007 280.2199 354.5182 54.5182 350.0000如果你试图过多地舍入这些值,这可能会有点古怪。当我使用output_precision(3)然后输出F时,数字实际上是四舍五入的,就好像我的系统的默认精度5仍然是活动的一样。但是,当我使用十进制后只有2或3位数的元素来定义另一个数组时,它将按预期的方式在output_precision(3)中显示。
如果您需要用于八度功能的文档。这并不完美,但却很有意义。希望这能帮上忙。
https://stackoverflow.com/questions/49968068
复制相似问题