笔者最近在GUI编程中想让数值保留小数点后三位数显示在界面中。
常见的函数有:
一、取整函数
1.向零取整(截尾取整)
fix-向零取整(Round towards zero);
>> fix(3.6)
ans = 3
2.向负无穷取整(不超过x 的最大整数-高斯取整)
floor-向负无穷取整(Round towards minus infinity);
>> floor(-3.6)
ans = -4
3.向正无穷取整(大于x 的最小整数)
ceil-向正无穷取整(Round towards plus infinity);
>> ceil(-3.6)
ans = -3
4.向最近整数取整,四舍五入(四舍五入取整)
round-向最近整数取整,四舍五入(Round towards nearest integer);
>> round(3.5)
ans = 4
二、在小数点后某一位四舍五入,即保留几位小数,也经常用到。
1.数值型 roundn—任意位位置四舍五入
>>a=123.4567890;
>>a=roundn(a,-4)
a = 123.4568
其中roundn函数功能如下:
y = ROUNDN(x) rounds the input data x to the nearest hundredth. %不指定n,精确到百分位 y = ROUNDN(x,n) rounds the input data x at the specified power %精确到小数点后指定位数n
2.符号型
digits(4)
vpa(....)
必须说明:vpa命令不能识别整数与小数,只算总位数,因此对它来说小数整数无论哪个都占一位,例如对9.3154保留两位小数时就得写成:
>>a=9.3154;
>>digits(3)
>>b=vpa(a)
b= 9.32
其中b为符号型变量;
3.字符型
>>a=12.34567;
>>b = sprintf('%8.2f',a)
b = 12.35 其中b为字符型变量。
附大佬的帖子:各种方法总结的很详细。
https://blog.csdn.net/dalaipifengxiansheng/article/details/52641724
https://blog.csdn.net/witnessai1/article/details/52432473
笔者用的是roundn,保留小数点后三位。
在命令行输入:
sum1=[1.2345,2.4567,8.4];
sum1=roundn(sum1,-3);
结果是:
sum1 =
1.2350 2.4570 8.4000
有人会疑惑,不是说显示小数点后三位吗?怎么后面还有多余的0。笔者试了一下,在GUI可编辑文本中显示的时候,后面多余的0是看不到的。所以可以放心使用。
GUI可编程文本显示数值代码如下:
str1=num2str(sum1(1,1));%将sum1数组第一行第一列数字转为字符。
obj1=handles.edit1;%edit1是想显示数字所对应的可编辑文本。
set(obj1,'String',str1);%显示数字
可以通过双击可编辑文本,弹出其属性检查器查看,其中Tag中的标志符就是edit1。
从GUI可编程文本中获取数字的代码是:
a= get(handles.edit1,'String');
sum1=str2double(a);