roundintmod等数值函数详解如何在ExcelPyth
本文主要介绍以下几个函数:小数处理函数round,roundup,rounddown,取整函数int,ceiling,随机函数rand,randbetween,randarray,取模函数mod,奇数函数odd,偶数函数even,绝对值函数abs,序列函数
sequence,以及上面这些函数用法如何在Python中实现
本例任务包:
问题1:生成一列10个随机数,范围从0到100的实数,并保留两位小数
问题2:生成一列10个随机整数,范围从100到100
问题3:分别将数值3。1415926进行四舍五入取2位小数,向上取2位小数,向下取2位小数,向上取整数,向下取整数,将数值3141。5926向小数点往左向上取2位,小数点往左向下取2位
问题4:分别将数值9。12进行向上取整为1的倍数,向上取整为3的倍数,向上取奇数,向上取偶数
问题5:生成一列10个随机小数,范围从100。00到100。00,并进行取绝对值
问题6:生成一个随机数组,行数为10,列数为6,最小值为100。00,最大值为100。00,小数2位显示
问题7:生成一列数值进行6个数循环,从16再从16,这样下去
问题8:生成一列120的序列,生成一列10行5列的序列,起始值为0,增量值为5
基础讲解:
RAND()函数:返回一个大于等于0且小于1的平均分布的随机实数,参数为空格
每次计算工作表时都会返回一个新的随机实数(可按快捷键F9进行重新计算)
ROUND函数:ROUND(number,numdigits),将数字四舍五入到指定的位数
第一个参数是数值,第二个是小数位数,表示保留小数的位置,四舍五入之后,后面的位数将被丢弃
例:对数值3。1415926进行函数操作:
四舍五入取两位:ROUND(A2,2)
我们把B2单元格复制到C2,保存为数值格式,可以看到这个数值只有小数两位,即后面的位数15926都被丢掉了
而如果把A2单元格改为显示2位小数,我们可以看到显示为3。14,
但是其实这个数值并没有改变,点单元格可以看到,后面还是有15926位数的
如果是向上取进行舍入呢,比如3。1415926不四舍五入,而是由3。141向上取到3。15,这里则要用到roundup函数
round单词本身有四舍五入的意思,up则是向上,表示向上取位,
ROUNDUP(number,numdigits)
第一个参数是数值,
第二个是向上取舍的位数,取整数
如果numdigits大于0(零),则将数字向上舍入到指定的小数位数。
如果numdigits为0,则将数字向上舍入到最接近的整数。
如果numdigits小于0,则将数字向上舍入到小数点左边的相应位数。
如果第二个参数为0,则表是向上取为整数,这时这个功能相当于函数ceiling()第二个参数为1时的用法
如果第一个参数为负数,则表示结果和不考虑负号时的结果是一样
如果第二个参数为负数,则表示向左进行舍位向上,例:
此时表示对小数点向左两位41舍掉,然后4前面的1向上取2,即得到3200
这个函数在实际应用中很重要的,比如在计算快递单费的时候,超过某一个重量会自动向上进行取数
既然有UP,那么就一定有DOWN
ROUNDDOWN函数用法和ROUNDUP函数一样,不相处在于一个是向下,一个是向上
当ROUNDDOWN函数第二个参数为0时,其功能就和INT取整函数相同了
Int(number)将数字向下舍入到最接近的整数,例:
与期相反,CEILING函数是向上取整
CEILING(number,significance),ceiling英文是天花板的意思,函如其名,返回将参数number向上舍入(沿绝对值增大的方向)为最接近的指定基数的倍数
不论参数number的符号如何,数值都是沿绝对值增大的方向向上舍入,这里和ROUNDUP一样
如果number正好是significance的倍数,则不进行舍入。
如果number和significance都为负,则对值按远离0的方向进行向下舍入。
如果number为负,significance为正,则对值按朝向0的方向进行向上舍入,例:
再介绍一下取模函数MOD
MOD(number,pisor),pisor是除数的意思,mod英文在计算机里是余数的意思,也叫模,此函数返回两数相除的余数,结果的符号与除数相同
这个函数与行号函数ROW()搭配可以实现数字周期性循环
问题1:生成一列10个随机小数,范围从1到100的实数,并保留两位小数
输入公式ROUND(RAND()100,2)
RAND()生成的随机数在01之间,乘100则在1和100之间
问题2:生成一列10个随机正整数,范围从100到100
RANDBETWEEN(100,100)
RANDBETWEEN(bottom,top),返回位于两个指定数之间的一个随机整数。每次计算工作表时都将返回一个新的随机整数。
第一个参数是将返回的最小整数。
第二个参数是将返回的最大整数。
实际用途这个函数与CHOOSE函数搭配可以制作一个随机抽取姓名的功能
问题3:分别将数值3。1415926进行四舍五入取2位小数,向上取2位小数,向下取2位小数,向上取整数,向下取整数,将数值3141。5926向小数点往左向上取2位,小数点往左向下取2位
四舍五入两位公式ROUND(A2,2)
向上两位公式ROUNDUP(A2,2)
向下两位公式ROUNDDOWN(A2,2)
向上取整公式ROUNDUP(A2,0)
向下取整公式ROUNDDOWN(A2,0)
往左向上取两位ROUNDUP(A3,2)
往左向下取两位ROUNDDOWN(A3,2)
问题4:分别将数值9。12进行向上取整为1的倍数,向上取整为3的倍数,向上取奇数,向上取偶数
向上取整1的倍数CEILING(A2,1)
向上取整3的倍数CEILING(A2,3)
向上取奇数ODD(A2)
向上取偶数EVEN(A2)
EVEN(number)正数向上取偶,负数向下取偶
ODD(number)正数向上取奇,负数向下取奇
问题5:生成一列10个随机小数,范围从100。00到100。00,并进行取绝对值
输入公式RANDBETWEEN(100,100)RAND()
ABS(5)返回绝对值,abs是absolute单词绝对的缩写
问题6:生成一个随机数组,行数为10,列数为6,最小值为100。00,最大值为100。00,小数显示
输入公式RANDARRAY(10,6,100,100,0)
但是显示的结果小数有很多位,我们用四舍五入的形式取2位ROUND(RANDARRAY(10,6,100,100,0),2)
问题7:生成一列数值进行6个数循环,从16再从16,这样下去
IF(MOD(ROW(A1),6)0,6,MOD(ROW(A1),6))
取余函数循环时会出现等于0的情况,当MOD(ROW(A6),6)0,我们加一个IF函数时行修正一下
问题8:生成一列120的序列,生成一列10行5列的序列,起始值为0,增量值为5
SEQUENCE(行,〔列〕,〔开始数〕,〔增量〕),sequence英文是序列的意思,可在数组中生成一系列连续数字
第一个参数是要返回的行数
第二个参数是要返回的列数
第三个参数是序列中第一个数字
第四个参数是步长,即数组中每个连续值递增的值
例:生成一列120的序列:
SEQUENCE(20,1,1,1)
生成一个10行5列,起始为0,增量为5:
SEQUENCE(10,5,0,5)
Python实现:
问题1:生成一列10个随机数,范围从0到100的实数,并保留两位小数
importrandom
a〔〕
i0
whilei9:
a。append(round(random。random()100,2))
i1
问题2:生成一列10个随机整数,范围从100到100
importrandom
a〔〕
i0
whilei9:
a。append(random。randint(100,100))
i1
问题3:分别将数值3。1415926进行四舍五入取2位小数,向上取2位小数,向下取2位小数,向上取整数,向下取整数,将数值3141。5926向小数点往左向上取2位,小数点往左向下取2位
四舍五入取小数二位:
a3。1415926
round(a,2)
importmath
defroundup(number,digit):
returnmath。ceil(number(10digit))(10digit)
defrounddown(number,digit):
returnmath。floor(number(10digit))(10digit)
上面是自定义两个函数,实现的功能与Excel上相对应的函数功能一样
向上两位:roundup(a,2)
向下两位:rounddown(a,2)
向上取整math。ceil(a)
向下取整math。floor(a)
向左2位向上roundup(a,2)
向左2位向下rounddown(a,2)
问题4:分别将数值9。12进行向上取整为1的倍数,向上取整为3的倍数,向上取奇数,向上取偶数
defceiling(number,x):
ifnumberx0:
print(number)
else:
numbermath。ceil(numberx)x
print(number)
上面是自定义一个函数ceiling,使其功能与Excel同名函数功能一样
ceiling(9。12,1)
defodd(x):
ifx20:
print(x1)
else:
xmath。ceil(x2)2
print(x1)
odd(9。12)
上面是自定义向上取奇数函数
defeven(x):
ifx20:
print(x)
else:
xmath。ceil(x2)2
print(x)
自定义向上取偶数函数
问题5:生成一列10个随机小数,范围从100。00到100。00,并进行取绝对值
importrandom
a〔〕
i0
whilei9:
a。append(round(random。random()random。randint(100,100),2))
i1
foriinrange(10):
print(abs(a〔i〕))
问题6:生成一个随机数组,行数为10,列数为6,最小值为100。00,最大值为100。00,小数2位显示
这个是新建一个空panda数据类型里的DataFrame数组,然后用循环语句,进行对每行每列的值进行取随机数赋值
importpandasaspd
importrandom
apd。DataFrame()
foriinrange(10):
forjinrange(6):
a。loc〔i,j〕round(random。random()random。randint(100,100),2)
print(a)
问题7:生成一列数值进行6个数循环,从16再从16,这样下去
此例用到while循环语句,只要变量i小于20就循环,这里我们是假定设置20行,当然根据需要可以改变行数,然后返回i对6进行取余后的值加1,就会形成我们想要的循环数列
i0
whilei20:
print(i61)
i1
问题8:生成一列120的序列,生成一列10行5列的序列,起始值为0,增量值为5
生成一列120的序列:
设置变量a为空序列,然后让i在019数字里循环,把i1的值增加到变量a里面即可
a〔〕
foriinrange(20):
a。append(i1)
a
np。arange(0,250,5)。reshape(10,5)
numpy模块的arange函数,arange函数第一个参数是起始值,第二个参数是最大值(不含本身),第三个参数是步长,reshape是数组形式,第一个参数是行数,第二个参数是列数