matlab保留小数点后两位。

比如将1变成1.00,因为需要在循环中控制文件路径,所以在程序运行过程中就需要转换,并不是控制输出格式。能不能像fortran一样类似write(xx,'(f4.2)')... 比如将1变成1.00,因为需要在循环中控制文件路径,所以在程序运行过程中就需要转换,并不是控制输出格式。
能不能像fortran一样类似write(xx,'(f4.2)') xx一下就行啊?
展开
无和有
高粉答主

2019-07-03 · 自由是我的最大追求,无中生有
无和有
采纳数:65 获赞数:45777

向TA提问 私信TA
展开全部

digits+vpa 方法

该方法是用digits()设定运算精度,然后用vpa获得所要的小数位数。该方法可以达到获取需要的任意位小数,但弊端很多

运算精度里包含了整数部分,所以需要提取整数部分和分数部分,并计算整数部分的位数,以下程序中求len就是整数位数。获得的结果是符号型,符号型的运算速度要比数值慢上很多。

format long

a = input('please give a number which will be changed£º');

n = input('how many decimal digits will you keep: ');

num = floor(a);

str = num2str(num);

len = length(str);

err = a-num; % 获取小数部分

digits(n+len); % 此处为需要的小数位 + 整数位数

need_num = num+vpa(err,n+len); %%%% 获得按要求保留的小数,但获得的是符号性

need_str = num2str(double(need_num)) %%%%% 符号型转浮点型,再转字符型

运行结果:

please give a number which will be changed:3.1415926

how many decimal digits will you keep: 2

need_str =3.14

扩展资料

MATLAB 产品族可以用来进行以下各种工作:

数值分析

数值和符号计算

工程与科学绘图

控制系统的设计与仿真

数字图像处理技术

数字信号处理技术

通讯系统设计与仿真

财务与金融工程

管理与调度优化计算(运筹学

MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱扩展了MATLAB 环境,以解决这些应用领域内特定类型的问题

参考资料来源:百度百科-MATLAB

wskapge
推荐于2018-02-26 · TA获得超过332个赞
知道小有建树答主
回答量:117
采纳率:0%
帮助的人:102万
展开全部
这个问题我以前也回答过,matlab里面好像只能对总的有效位数进行控制,只对小数的话目前没有太好的办法。有些方法是可以用的,就是太复杂了,比如说

方法1:digits+vpa 方法

该方法是用digits()设定运算精度,然后用vpa获得所要的小数位数。该方法可以达到获取需要的任意位小数,但弊端很多,其1,运算精度里包含了整数部分,所以需要提取整数部分和分数部分,并计算整数部分的位数,以下程序中求len就是整数位数。其2,获得的结果是符号型,符号型的运算速度要比数值慢上很多。

format long

a = input('please give a number which will be changed£º');

n = input('how many decimal digits will you keep: ');

num = floor(a);

str = num2str(num);

len = length(str);

err = a-num; % 获取小数部分

digits(n+len); % 此处为需要的小数位 + 整数位数

need_num = num+vpa(err,n+len); %%%% 获得按要求保留的小数,但获得的是符号性

need_str = num2str(double(need_num)) %%%%% 符号型转浮点型,再转字符型

运行结果:

please give a number which will be changed:3.1415926

how many decimal digits will you keep: 2

need_str =

3.14

方法2:round 函数法

该方法为先将要保留的部分转成整数,即切除不要的尾部,然后再恢复成所要的相应小数。该方法最为简洁,但不可恢复。

format long

a = input('please give a number which will be changed:');

n = input('how many decimal digits will you keep: ');

b = a*10^n;

aa = round(b);

need_num = aa/10^n; %%%%% 先化成整数,再转成小数

need_str = num2str(need_num)

运行结果:

please give a number which will be changed:pi

how many decimal digits will you keep: 2

need_str =

3.14

方法3:直接转成字符串,再取需要位数

该方法是直接转成需要的字符串,再截取所要的小数位。缺点是连四舍五入都没有,直接截断尾部。

format long

a = input('please give a number which will be changed:');

n = input('how many decimal digits will you keep: ');

num = floor(a);

str = num2str(num);

len = length(str);

str1 = num2str(a);

need_str = str1(1:(len+n+1)) %%%取需要的长度,这里需要加上整数长和小数点1位

运行结果:

please give a number which will be changed:pi
how many decimal digits will you keep: 2

need_str =

3.14

方法4:fprintf方法

该方法仅仅只是输出显示,并无法达到转成字符的效果。而且无法动态控制。

a = input('please give a number which will be changed:');
n = input('how many decimal digits will you keep: ');
fprintf('a = %3.2f\n',a) %%%%3.2f中.2就是小数位数

运行结果:

please give a number which will be changed:pi
how many decimal digits will you keep: 2
a = 3.14
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友89b6357
推荐于2017-12-15
知道答主
回答量:3
采纳率:0%
帮助的人:3459
展开全部
可用vpa(x,n) 来控制有效位数显示

a=pi;sprintf('%10.1f',a)
sprintf输出来的是char array

ceil/fix/floor/round是处理去小数的函数
让小数点之后保留一位, 试试
a=pi; aa=round(10*a)/10
是你想要的吗?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一道痕一马平川
2012-05-12
知道答主
回答量:15
采纳率:0%
帮助的人:4.8万
展开全部
a=4;
b=3;
digits(5)
y=vpa(a/b)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
好看邀请YZKHE7
2012-01-08 · 超过14用户采纳过TA的回答
知道答主
回答量:81
采纳率:0%
帮助的人:43.8万
展开全部
这个你可以先弄成表格再转嘛
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式