C语言有以下几种取整方法:1、直接赋值给整数变量。如:int i = 25; 或 i = (int) 25;这种方法采用的是舍去小数部分,可以用于你的问题。2、C/C++中的整数除法运算符“/”本身就有取整功能(int / int),而下面介绍的取整函数返回值是double。整数除法对正数的取整是舍去小数部分,可以用于你的问题。但是整数除法对负数的取整结果和使用的C编译器有关。3、使用floor函数。floor(x)返回的是小于或等于x的最大整数。如:floor(25) = 2floor(-25) = -34、使用ceil函数。ceil(x)返回的是大于x的最小整数。如:ceil(25) = 3ceil(-25) = -2floor()是向负无穷大舍入,floor(-25) = -3;ceil()是向正无穷大舍入,ceil(-25) = -2。floor函数可以用于你的问题。hyh的意见:int x,a,b,c,d;a=x/1000;b=x%1000/100;
这个问题用Format方法可以轻松搞定。
例如format(x,"000") 像这样就可以四舍五入并且保持2位小数。
2 还有一种简单的方法就是直接在定义变量是int+05,但这样可能会出现一些小错误,所以还是推荐第一种方法。
3利用Math类中的round方法,举个例子:
public static void main(String[] args) {
Systemoutprintln("125的四舍五入值:" + Mathround(125));
Systemoutprintln("-125的四舍五入值:" + Mathround(-125));
}
Output:
125的四舍五入值:13
-125的四舍五入值:-12
很简单的,a是个小数的话点后面有数据(3000)浮点型
取整就是要将点后面的都去掉,把它强制转换为3,可以这样写(int)a
这个时候a就为3
但是这样是有风险的,比如a的值为32545,那么你强制转换为int,a点后面的数就都被消灭了
就是这样
在Java中可以使用javalangMath类中的方法对int类型的数据进行 *** 作。
向上取整:Mathceil(参数)。
四舍五入:Mathround(参数);
向下取整 :Mathfloor(参数);
是的,楼主先理解了这2个函数的用法,rounddown是向下取整,如果楼主希望得到什么样的答案,可以举例说明,重新编写公式完成。
excel四舍五入函数,细分又可以分为向上四舍五入函数ROUND,向下舍数字函数ROUNDDOWN,按指定数倍数向下舍入函数FLOOR,四舍五入为最接近的偶数函数EVEN,向上舍入为指定数据倍数函数CEILING,向下四舍五入到最接近的整数函数INT。
你好!刚刚看到你的留言。希望没有耽误你。
好吧,我们来看你写出来的函数:Int(9-0+1)rnd+0
它的作用是一个产生随机数。
一、我们分析一下它的结构和它的最终作用:
它一共由三部分组成:
Int(9-0+1)——它是一个取整函数int(x),即求不大于x的最大整数。在本例中,自变量x被一个计算式取代:9-0+1,它是一个恒定值10。所以这一部分相当于int(10)=10,是一个恒定不变的量。
rnd——是产生随机数的函数rnd(x)的简写形式。它产生一个介于[0,1)之间的小数。
+0
——毫无疑问,这一步对于程序运行毫无意义,但是既然编写程序的人员写上,则有它的原因,留在下面分析。在分析程序运行时,当成没有这一项就可以了。
现在综合来看它的作用:Int(9-0+1)rnd+0相当于:10rnd=10[0,1)=[0,10),它的最终目的是产生一个介于0到99999999之间(包括两头)的小数。
二、再看看这一句里边冗余内容及分析:
刚才说的+0,以及9-0+1这两个问题不算是无意义内容,等后面仔细分析。真正无意义的是int()函数的使用,这个地方,int(9-0+1)=(9-0+1),两者完全相等,所以说int是冗余的。
int()函数是个取整函数,如果要产生小数是不需要int()的(这句话仅限于此处使用),我的分析应该是作者想产生0到9的整数,而不是像第一步分析的那样产生小数。这样的话,int()是用错了地方。
三、产生0-9整数随机数的正确语句:
完整的语句应该是int(rnd(9-0+1)+0),你会说这一句跟int(rnd10)相当,是的。原因下面分析。
四、为什么要写+0:
一般地,在vb中,要产生M-N之间的随机整数(包括M和N且<N),是这样写的:
int(rnd(N-M+1)+M)
当你把M=0,N=9代入后,就得到了int(rnd(9-0+1)+0)这个一般式子。
如:你如果要产生[78,215]之间的随机整数,就可以写成:int(rnd(215-78+1)+78)就可以了,当然你还可以作出计算并简写成:int(rnd138+78),这产生一个问题,你从这一句中很难看得出产生随机数的范围了!!(且不说容易产生计算错误呢)不如写成int(rnd(215-78+1)+78),这样一眼就可以看出产生的范围是[78,215]。
这就是那个+0的由来。
希望能够帮到你~~~~
测试了一下,确实如你所说的,msgbox
int(1332/74)显示17,msgbox
1332/74显示18
msgbox
int(666
/
37)显示17
msgbox
666
/
37显示18
msgbox
int(666
/
37)+1才显示18
在单元格里用这个公式却都显示18
int函数是截尾法取整,就是int(1999999)=1,这个应该是计算的偏差,也可以认为是一个bug,可以向微软提交(也许有人提交过了)。
估计msgbox
显示结果的计算方法和单元格内数值的计算方法略有不同,所以两个结果不同。
这个在某些时候调试是需要注意。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)