matlab 将数字转换成字符串,可不可以按小数点后的位数来保留?

 我来答
cxd1301
推荐于2018-12-20 · TA获得超过3021个赞
知道小有建树答主
回答量:593
采纳率:50%
帮助的人:315万
展开全部
你问的这个问题很有意思啊,matlab要保留任意位数,是一个比较值得研究的东西。
默认format也就是format short是保留4位小数,format long 是保留14位,如果要保留两位或者六位,就存在如何设置的问题。本人做了点总结,给出以下方法

方法1:digits+vpa
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)) %%%%% 再次转换获得字符型

方法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)

方法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位

方法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',a) %%%%3.2f中.2就是小数位数
百度网友7158297
2011-09-01 · TA获得超过107个赞
知道答主
回答量:65
采纳率:0%
帮助的人:43.7万
展开全部
如果不四舍五入,可以用正则表达式直接提取。
比如,要提取小数点后3位:
string='1.123456 2.123456';
s=regexp(string,'\d+.\d{3}','match');
output:
s={'1.1234','2.1234'};
最后只要用for语句做str2num(s{i})就行了。

参考资料: help regexp

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
梦泉111
2012-02-23
知道答主
回答量:1
采纳率:0%
帮助的人:1655
展开全部
最好的办法:str = num2str(A, format)
例如a=0.0023456想变为b=2.34X10^-3,可用b=num2str(a,'%.2f');
详细请查看:num2str函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式