matlab中想取小数点后三位,但不需要四舍五入有啥函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab中想取小数点后三位,但不需要四舍五入有啥函数相关的知识,希望对你有一定的参考价值。
比如0.36789我只想要0.367后边的89舍掉,这个在matlab中怎么实现.
matlab中小数取整的函数大约有四个:floor、ceil、round、fix若A=[-2.0,-1.9,-1.55,-1.45,-1.1,1.0,1.1,1.45,1.55,1.9,2.0];floor:朝负无穷方向靠近最近的整数;floor(A)ans=-2-2-2-2-ceil:朝正无穷方向靠近最近的整数;ceil(A)ans=-2-1-1-1-round:取最近的整数(相当于四舍五入)round(A)ans=-2-2-2-1-fix:取离0最近的整数fix(A)ans=-2-1-1-1- 参考技术A floor函数(向下取整)或ceil函数(向上取整)(你的要求,应该是用floor函数)例如,a=3.1415926保留三位
b=1000*a;
a=floor(b)/1000
得到a=3.1410,a已被赋值3.141
后边5926被舍去,正是你需要的保留方式。
同样的,
b=1000*a;
a=ceil(b)/1000
得到a=3.1420,a被赋值3.142
同样的,还有round取整方法是四舍五入,fix取整方法是往靠近0的取整,四种方式可以满足几乎所有的保留需求。你可以自己操作试试四种方式的区别。
C语言编写函数,对浮点数保留两位小数,对第三位四舍五入。程序如下 #include<stdio.h
C语言编写函数,对浮点数保留两位小数,对第三位四舍五入。程序如下 #include<stdio.h>
#include<math.h>
void sum(float x)
float a,b,c,d;
int f;
c=100*x;
b=floor(c);
a=1000*x;
d=(a-10*b);
f=floor(d);
printf("%d ",f);
if(f<5)
x=x; printf("%.2f ",x);
if (f>5)
x=x+0.01;
printf("%.2f ",x-0.01);
if(f=5)
printf("%.2f ",x+0.01);
main()
float x;
scanf("%f",&x);
sum(x);
为什么我输入3.1777时,会得到两个数3.18 3.20
void sum(float x)
float a,b,c,d;
int f;
c=100*x;
b=floor(c);
a=1000*x;
d=(a-10*b);
f=floor(d);
printf("%d ",f);
if(f<5)
x=x; printf("%.2f ",x);
if (f>5)
x=x+0.01;
printf("%.2f ",x-0.01);
if(f=5) //这里写成了赋值语句,应该是==
printf("%.2f ",x+0.01);
main()
float x;
scanf("%f",&x);
sum(x);
参考技术A 呃啊。
这种事情一句话不久解决?
float a;
scanf("%f",&a);
printf("%.2f",a+0.005);
真不知道为什么要用这么多代码
不过你写的我也给你看了
你的==你写成了=
所以if(f=5)内的也被执行了 参考技术B if(f=5) = 应该是 ==
if(f == 5)追问
😭。。。好像还真是
本回答被提问者采纳以上是关于matlab中想取小数点后三位,但不需要四舍五入有啥函数的主要内容,如果未能解决你的问题,请参考以下文章