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

 #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);
 

参考技术A 呃啊。
这种事情一句话不久解决?
float a;
scanf("%f",&a);
printf("%.2f",a+0.005);
真不知道为什么要用这么多代码

不过你写的我也给你看了
你的==你写成了=

所以if(f=5)内的也被执行了
参考技术B if(f=5) = 应该是 ==
if(f == 5)追问

😭。。。好像还真是

本回答被提问者采纳

以上是关于matlab中想取小数点后三位,但不需要四舍五入有啥函数的主要内容,如果未能解决你的问题,请参考以下文章

excel如何让批量数据四舍五入保留小数点后三位?

long类型截取后几位

matlab里面如何保留小数点后三位

Oracle33ROUND 截取 四舍五入

如何使用小数点后三位的货币掩码?

如何在javascript中获得小数点后三位[关闭]