MATLAB 任意位数小数控制

今天收到一个求助,说是要控制小数至任意小数位,并要将结果转成字符型。个人知道,matlab的小数位控制较为单一,基本上靠format来完成。但matlab中,仅有默认的format,也就是format short 是小数点后4位,以及format long是小数点后15位。但如果要求的是的两位小数,或者6位,8位,那该如何解决?上网搜索了一番,发现该问题有不少人碰到,遗憾的是,没有令人很满意的答案。个人将现有方法整理了一下,加上个人理解,写了几个转换的方法,整理如下。

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

以上便是本人所总结的控制matlab小数至任意位数,并转换为字符串的各方法,不足之处众多,有待将来补充。

copyright: cxd1301

matlab 小数位,MATLAB 任意位数小数控制相关推荐

  1. C语言输出任意位数小数

    输出函数:printf(); 1.保留n位小数 printf("%.nlf",a); //保留n位小数 此外,还可以写做 printf("%.*f",n,a); ...

  2. 金额输入框校验和自动校正、支持指定任意位数小数decimal、支持只能输入整数、支持是否允许输入负数等功能

           应用场景:开发前端交互页面时,经常遇到金额输入框.指定小数位数的数字输入框,单一的正则表达式无法满足大部分的业务校验需求,下面总结一个实用巧妙而又灵活的把普通输入框变成自动校正输入框的解 ...

  3. Java四舍五入保留任意位数小数

    public double persist(double num, int x) {num *= Math.pow(10, x + 1);// 10的x+1次方:x表示所要最终要保留的位数// 强制转 ...

  4. matlab中将小数四舍五入,matlab 四舍五入 保留至指定小数(图)

    matlab 四舍五入 保留至指定小数(图) 07-23栏目:技术 TAG:matlab四舍五入 matlab四舍五入 https://www.jhua.orgcopyright jhua.org转载 ...

  5. 基于MATLAB的离散系统的数字PID控制仿真

    基于MATLAB的离散系统的数字PID控制仿真 1 设计要求 2 方案设计 2.1 设计思路及总体方案框图 2.2 PID算法的基本原理 2.3 PID算法的离散化 3 总体方案的选择与设计 3.1 ...

  6. matlab进行mppt控制仿真,基于matlab光伏发电系统的MPPT控制与仿真.pdf

    基于matlab光伏发电系统的MPPT控制与仿真 ( ) J.SHANXIAGRIC.UNIV.NaturalScienceEdition ( ) , () 002990 学报 自然科学版 2013 ...

  7. MATLAB仿真斜坡信号的校正,控制系统仿真matlab第六章习题答案.doc

    控制系统仿真matlab第六章习题答案 控制系统仿真第六章课后题 作业6.1 在图6.1中,已知单位负反馈系统被控对象的传递函数为 试编写matlab程序,设计系统的超前矫正器Gc(s),要求: 1) ...

  8. 【飞行器】基于matlab四旋翼无人机几何跟踪控制【含Matlab源码 2270期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[飞行器]基于matlab四旋翼无人机几何跟踪控制[含Matlab源码 2270期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式 ...

  9. 用MATLAB怎么获取任意像素点的灰度值

    用MATLAB怎么获取任意像素点的灰度值 这两天跑代码遇到一个问题,想要根据图像的灰度值进行阈值分割,通过学习,总结以下两种方法来对任意像素点的灰度值. 方法一 1.首先取得你想要的点的坐标,通过gi ...

最新文章

  1. docker容器时区与宿主机不一致的解决方法
  2. hdu2412 Party at Hali-Bula
  3. ABAP动态取得数据的方法
  4. leetcode19. 删除链表的倒数第N个节点
  5. 引用文献管理软件Mendeley
  6. 暑期训练日志----2018.8.19
  7. c# 数组中的空值_C# 数据操作系列 - 1. SQL基础操作
  8. python爬虫筛选数据_[python爬虫]使用beautifulsoup库的select方法对网页内容进行筛选...
  9. ZooKeeper学习第七期--ZooKeeper一致性原理(转)
  10. 东农计算机网络技术离线作业,东农16秋《电力系统分析》在线作业
  11. 传智播客 sklearn数据集与机器学习组成
  12. ASP.NET MVC2.0在Tab页中实现异步无刷新分页
  13. 冒险岛无敌外挂代码诠释
  14. 虚幻引擎4 DEMO打包下载
  15. 强化学习环境学习-gym[atari]-paper中的相关设置
  16. 产品经理,该如何做好「自己」这款产品?
  17. STM32F103C8T6 I/O口驱动4位共阳数码管
  18. 一零二八、将csdn文章内容保存成 html、pdf、md格式
  19. 项目经理如何做好项目管理PMP - 持续更新
  20. 使用 Android Studio 搭建安卓开发环境

热门文章

  1. boll指标 java_2、金融之关于BOLL
  2. H3C交换机堆叠简单案例
  3. c语言中结构体的指针初始化,c语言结构体指针初始化
  4. 英语和c语言哪个难,AP课程各科大比拼 来看看哪个简单哪个难
  5. Odoo 创建供应商或联系人时显示必填应收账款和应付账款
  6. 从特征描述符到深度学习:计算机视觉发展20年
  7. 策划----收集----总结----策划----执行----总结----回顾
  8. 38岁浙大学霸Facebook总部跳楼:把工作当全部,是你丢失自我的开始
  9. 智汀云盘-开发指南android端:授权登录
  10. mysql tinyint 2_mysql中Tinyint(1)、Tinyint(2)