matlab保留小数点后两位。
能不能像fortran一样类似write(xx,'(f4.2)') xx一下就行啊? 展开
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
方法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
a=pi;sprintf('%10.1f',a)
sprintf输出来的是char array
ceil/fix/floor/round是处理去小数的函数
让小数点之后保留一位, 试试
a=pi; aa=round(10*a)/10
是你想要的吗?
b=3;
digits(5)
y=vpa(a/b)
广告 您可能关注的内容 |