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

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值