我在尝试让MATLAB使用四位舍入算法进行计算时遇到了麻烦。
(不幸的是,由于我是Stackoverflow的新手,我无法发布图片,因此我需要将外部链接到我最初在此问题中设置的内容:http://i.imgur.com/XMkSE6p.png)
然而在MATLAB中,当我尝试使用函数vpa时,我收到了答案-0.01611。
这是我正在运行的MATLAB脚本:
A = 1;
B = 62.10;
C = 1;
vpa((-B+sqrt(B^2-4*A*C))/(2*A),4)
返回
ans =
-0.01611
我想要的时候
ans =
-0.02
我是否错误地使用了函数vpa?有没有更好的方法在我的MATLAB脚本中制定二次方程来实现这一目标?对此的任何帮助将不胜感激。
答案 0 :(得分:1)
为了达到图片的效果,你必须在那里完成所做的事情,在每次操作后进行回合,最后不要进行一次。除非您需要vpa
的扩展精度,否则我建议您改为使用双打,而是使用roundsd
。
%just demonstrating it for the first intermediate result, getting the 3852
r=@(x)roundsd(x,4)
r(B^2)-4*r(A)*r(C)
在任何地方进行舍入操作都不是很方便,为了更方便的使用,你可以实现自己的类,重载内置的操作符。
答案 1 :(得分:0)
使用round()
功能:
A = 1;
B = 62.10;
C = 1;
x = vpa((-B+sqrt(B^2-4*A*C))/(2*A),4)
x =
-0.01611
y = round(x,2)
y =
-0.02