首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MATLAB:四位舍入算法

MATLAB:四位舍入算法
EN

Stack Overflow用户
提问于 2016-01-23 18:16:40
回答 2查看 1.1K关注 0票数 0

我很难用MATLAB来计算四位数的舍入算法。

(不幸的是,由于我对Stackoverflow还不熟悉,所以我不能发布图片,所以我需要从外部链接到我最初在这个问题中设置的内容:http://i.imgur.com/XMkSE6p.png)

然而,在MATLAB中,当我尝试使用函数vpa时,我收到了答案-0.01611。

下面是我正在运行的MATLAB脚本:

代码语言:javascript
复制
A = 1;
B = 62.10;
C = 1;

vpa((-B+sqrt(B^2-4*A*C))/(2*A),4)

回传

代码语言:javascript
复制
ans =

-0.01611

当我想

代码语言:javascript
复制
ans =

-0.02

我是不是不正确地使用vpa函数?在我的MATLAB脚本中是否有更好的方法来建立二次方程来实现这一点?如果能对此提供任何帮助,我们将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-23 18:57:45

为了从图片中得到结果,你必须做在那里做的事情,每一次手术之后都要做一次,而不仅仅是在最后一次。除非您需要vpa提供的扩展精度,否则我建议您使用doubles,而使用roundsd

代码语言:javascript
复制
%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
EN

Stack Overflow用户

发布于 2016-01-23 18:39:48

使用round()函数:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34967016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档