大家好,欢迎来到IT知识分享网。
本文主要介绍以下几个函数:小数处理函数round,roundup,rounddown,取整函数int,ceiling,随机函数rand,randbetween,randarray,取模函数mod,奇数函数odd,偶数函数even,绝对值函数abs,序列函数
sequence,以及上面这些函数用法如何在Python中实现
本例任务包:
问题1:生成一列10个随机数,范围从0到100的实数,并保留两位小数
问题2:生成一列10个随机整数,范围从-100到100
问题3:分别将数值3.进行四舍五入取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个数循环,从1-6再从1-6,这样下去
问题8:生成一列1-20的序列,生成一列10行5列的序列,起始值为0,增量值为5
基础讲解:
RAND()函数:返回一个大于等于 0 且小于1 的平均分布的随机实数,参数为空格
每次计算工作表时都会返回一个新的随机实数(可按快捷键F9进行重新计算)
ROUND函数:ROUND(number, num_digits),将数字四舍五入到指定的位数
第一个参数是数值,第二个是小数位数,表示保留小数的位置,四舍五入之后,后面的位数将被丢弃
例:对数值3. 进行函数操作:
四舍五入取两位:=ROUND(A2,2)
我们把B2单元格复制到C2,保存为数值格式,可以看到这个数值只有小数两位,即后面的位数15926都被丢掉了
而如果把A2单元格改为显示2位小数,我们可以看到显示为3.14,
但是其实这个数值并没有改变,点单元格可以看到,后面还是有15926位数的
如果是向上取进行舍入呢,比如3.不四舍五入,而是由3.141向上取到3.15,这里则要用到roundup函数
round单词本身有四舍五入的意思,up则是向上,表示向上取位,
ROUNDUP(number, num_digits)
第一个参数是数值,
第二个是向上取舍的位数,取整数
如果 num_digits 大于 0(零),则将数字向上舍入到指定的小数位数。
如果 num_digits 为 0,则将数字向上舍入到最接近的整数。
如果 num_digits 小于 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, divisor),divisor是除数的意思,mod英文在计算机里是余数的意思,也叫“模”,此函数返回两数相除的余数, 结果的符号与除数相同
这个函数与行号函数ROW()搭配可以实现数字周期性循环
问题1:生成一列10个随机小数,范围从1到100的实数,并保留两位小数
输入公式=ROUND(RAND()*100,2)
RAND()生成的随机数在0-1之间,乘100则在1和100之间
问题2:生成一列10个随机正整数,范围从-100到100
=RANDBETWEEN(-100,100)
RANDBETWEEN(bottom, top),返回位于两个指定数之间的一个随机整数。 每次计算工作表时都将返回一个新的随机整数。
第一个参数是将返回的最小整数。
第二个参数是将返回的最大整数。
实际用途这个函数与CHOOSE函数搭配可以制作一个随机抽取姓名的功能
问题3:分别将数值3.进行四舍五入取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个数循环,从1-6再从1-6,这样下去
=IF(MOD(ROW(A1),6)=0,6,MOD(ROW(A1),6))
取余函数循环时会出现等于0的情况,当MOD(ROW(A6),6)=0,我们加一个IF函数时行修正一下
问题8:生成一列1-20的序列,生成一列10行5列的序列,起始值为0,增量值为5
=SEQUENCE(行,[列],[开始数],[增量]),sequence英文是序列的意思,可在数组中生成一系列连续数字
第一个参数是要返回的行数
第二个参数是要返回的列数
第三个参数是序列中第一个数字
第四个参数是步长,即数组中每个连续值递增的值
例:生成一列1-20的序列:
=SEQUENCE(20,1,1,1)
生成一个10行5列,起始为0,增量为5:
=SEQUENCE(10,5,0,5)
Python实现:
问题1:生成一列10个随机数,范围从0到100的实数,并保留两位小数
import random
a=[]
i=0
while i<=9:
a.append(round(random.random()*100,2))
i += 1
问题2:生成一列10个随机整数,范围从-100到100
import random
a=[]
i=0
while i<=9:
a.append(random.randint(-100,100))
i += 1
问题3:分别将数值3.进行四舍五入取2位小数,向上取2位小数,向下取2位小数,向上取整数,向下取整数,将数值3141.5926向小数点往左向上取2位,小数点往左向下取2位
四舍五入取小数二位:
a = 3.
round(a,2)
import math
def roundup(number,digit):
return math.ceil(number*(10**digit))/(10**digit)
def rounddown(number,digit):
return math.floor(number*(10**digit))/(10**digit)
上面是自定义两个函数,实现的功能与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的倍数,向上取奇数,向上取偶数
def ceiling(number,x):
if number%x == 0:
print(number)
else:
number = math.ceil(number/x)*x
print(number)
上面是自定义一个函数ceiling,使其功能与Excel同名函数功能一样
ceiling(9.12,1)
def odd(x):
if x%2 == 0:
print(x+1)
else:
x = math.ceil(x/2)*2
print(x+1)
odd(9.12)
上面是自定义向上取奇数函数
def even(x):
if x%2 == 0:
print(x)
else:
x = math.ceil(x/2)*2
print(x)
自定义向上取偶数函数
问题5:生成一列10个随机小数,范围从-100.00到100.00,并进行取绝对值
import random
a=[]
i=0
while i<=9:
a.append(round(random.random()*random.randint(-100,100),2))
i += 1
for i in range(10):
print(abs(a[i]))
问题6:生成一个随机数组,行数为10,列数为6,最小值为-100.00,最大值为100.00,小数2位显示
这个是新建一个空panda数据类型里的DataFrame数组,然后用循环语句,进行对每行每列的值进行取随机数赋值
import pandas as pd
import random
a=pd.DataFrame()
for i in range(10):
for j in range(6):
a.loc[i,j] = round(random.random()*random.randint(-100,100),2)
print(a)
问题7:生成一列数值进行6个数循环,从1-6再从1-6,这样下去
此例用到while循环语句,只要变量i小于20就循环,这里我们是假定设置20行,当然根据需要可以改变行数,然后返回i对6进行取余后的值加1,就会形成我们想要的循环数列
i=0
while i<20:
print(i%6+1)
i +=1
问题8:生成一列1-20的序列,生成一列10行5列的序列,起始值为0,增量值为5
生成一列1-20的序列:
设置变量a为空序列,然后让i在0-19数字里循环,把i+1的值增加到变量a里面即可
a=[]
for i in range(20):
a.append(i+1)
a
np.arange(0,250,5).reshape(10,5)
numpy模块的arange函数,arange函数第一个参数是起始值,第二个参数是最大值(不含本身),第三个参数是步长,reshape是数组形式,第一个参数是行数,第二个参数是列数
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/46970.html