此函数是python内置的,无需导入任何模块;运算规则是将小数部分截断去掉。
比如int(3.4),就把【.4】截掉,结果是3;再比如int(-3.3),就把【.3】截掉,结果是-3。
二、近零(fix)此函数在numpy模块中,因此需要导入后再使用。
fix这个函数名不仅在numpy模块中有,在其他语言中也有,表示使浮点数向靠近0的方向取整。
from numpy import *
print(fix(4.3)) # 4.0
print(fix(-4.2)) # -4.0
三、 近小(floor)或地板运算
此函数在math模块中,需要导入后再使用;运算规则是向负无穷大(注意不是无穷小,无穷小是无限趋近于0)的方向取整。
from math import *
print(floor(-4.3)) # -5
print(floor(4.2)) # 4
四、近大(ceil)或天花板运算
此函数在math模块中,需要导入后再使用;运算规则是向无穷大的方向取整。
from math import *
print(ceil(-4.3)) # -4
print(ceil(4.2)) # 5
五、四舍五入(round)
此函数在Python中已内置,可直接使用。
print(round(-4.3)) # -4
print(round(-4.6)) # -5
print(round(4.3)) # 4
print(round(4.6)) # 5
六、取余(rem)和取模(mod)
6.0 取模运算和取余运算各是什么?
参考文章:取模运算和求余运算的区别——huasion
对于整数a,b来说,取模运算或者求余运算的方法都是:
- 求整数商: c = a/b;「向无穷小取整就是c = fix(a / b),向负无穷小取整就是c = floor(a / b)」
- 计算模或者余数: r = a - c*b。
求模运算和求余运算在第一步不同: 取模求余运算在取c的值时,向趋近于0的方向舍入,也即fix()函数; 而取模运算在计算c的值时,向负无穷大的方向舍入,也即floor()函数。
因此,当a和b符号一致时,求模运算和求余运算所得的c的值一致,因此结果一致。但是当符号不一致的时候,结果不一样。具体来说,求模运算结果的符号和b一致,求余运算结果的符号和a一致。
在C语言中,% *** 作符表示“求余运算”;在Python语言中,%表示的是“取模运算”。
那Python中如何实现求余运算呢?至今我还没找到一个便捷的直接用非自定义函数实现的方法。
6.1 numpy模块中的不优雅之处在numpy中有两个函数remainder和mod,这两个函数按道理来说一个是取余、一个是取模,但是两个函数的求解结果完全一样。不符合正常的取余运算看前者符号,取模运算看后者符号的普遍规律,非常不雅。
import numpy as np
a = [7, -7, 7, -7]
b = [3, 3, -3, -3]
print(np.mod(a, b))
print(np.remainder(a, b))
# [ 1 2 -2 -1]
# [ 1 2 -2 -1]
6.2 标准库Operator的mod()和 *** 作符%
python标准库operator模块的mod()和 *** 作符%的作用一样,都是完成取模运算。
print(mod(7, -4)) # -1
print(7 % -4) # -1
print(mod(-7, 4)) # 1
print(-7 % 4) # 1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)