python-取整(int)、近零(fix)、近小(floor)、近大(ceil)、四舍五入(round);由浮点数获得整数的方法小结;什么是取余(rem)、取模(mod)?取模运算和取余运算

一、取整(int)

此函数是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来说,取模运算或者求余运算的方法都是:

  1. 求整数商: c = a/b;「向无穷小取整就是c = fix(a / b),向负无穷小取整就是c = floor(a / b)」
  2. 计算模或者余数: 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

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值