在MATLAB中,有没有办法让它在十进制后只使用4位数进行所有计算? 如果我写fprintf('%85.83f \ n',单一(1.1566)),它不完全是1.1566。对于我的具体问题,我不能累积这些额外的数字。 我希望所有内部计算都只在这个精度上完成。
答案 0 :(得分:1)
默认情况下,MATLAB以双精度执行所有操作。如果希望操作使用较低的精度,可以使用variable precision arithmetic
,它是符号数学工具箱的一部分。在您的情况下,首先使用digits
函数将精度设置为4位有效数字,然后使用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
答案 1 :(得分:1)
MathWorks提供Fixed-Point Toolbox ,可满足OP的需求。
然而,如果OP的陈述我无法承担那些额外的数字是的代码我想要更快的执行并且不介意精度的损失我担心OP可能运气不好。在具有内置于硬件中的32位或64位(或两者)浮点计算的现代数字计算机上,非硬件精度的计算必须在软件中完成,并且可能明显变慢。