Output_precision();八度

Output_precision(); Octave

嗨,在调用此代码(Octave)后,我得到了 7 位精度的答案,我只需要 6 位。值得一提的是,在不同的数据集上,输出是正常的(6 位);

output_precision(6);
Prev

输出:

Prev =
   0.1855318
   0.2181108
   0.1796457

我知道这有点晚了,但我想为以后遇到相同问题的任何人添加一个答案。

根据 function reference for output_precision(),传递给函数的参数(在本例中为 6)指定有效数字的 最小值 , 这只保证未来的数字输出不会 少于 有效数字的数量。

据我所见,如果您在显示数组之前使用 output_precision(new_val)(例如,问题中的 Prev),则 Octave 将四舍五入小数点前位数最少的元素放置 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).

Check out Octave Forge if you ever need docs for octave features。它并不完美,但它是一些东西。希望这对您有所帮助。