1

在 MATLAB 中,有没有办法让它只使用小数点后 4 位进行所有计算?如果我写 fprintf('%85.83f\n',single(1.1566)),它不完全是 1.1566。对于我的具体问题,我不能累积那些额外的数字。我希望所有内部计算都只在这个精度上完成。

4

2 回答 2

1

默认情况下,MATLAB 以双精度执行所有操作。如果您希望您的运算使用较低的精度,您可以使用variable precision arithmetic符号数学工具箱的一部分。在您的情况下,首先使用该函数将精度设置为 4 位有效数字digits,然后使用该函数声明和操作变量vpa

old_precision = digits; % Save the old precision
digits(4);
vpa(1/3 + 1/2)
digits(old_precision); % Set the precision back

将输出

>> vpa(1/3+1/2)

ans =

0.8333

另一个例子:

>> digits(3);
>> a = 5.4;
>> vpa(a)+1/3

ans =

5.73
于 2012-07-06T05:40:10.033 回答
1

MathWorks 提供了一个定点工具箱,可以满足 OP 的需求。

但是,如果 OP 的语句我不能累积那些额外的数字是代码,因为我想要更快的执行并且不介意精度的损失,我担心 OP 可能会不走运。在硬件中内置 32 位或 64 位(或两者)浮点计算的现代数字计算机上,非硬件精度的计算必须在软件中完成,并且可能会明显变慢。

于 2012-07-06T09:20:28.283 回答