美文网首页
python的%,//运算实现相对月份转换

python的%,//运算实现相对月份转换

作者: zhangp365 | 来源:发表于2019-10-10 21:40 被阅读0次

编程碰到这样一个需求:

将十个月前,五个月后的口语化的月份基于当前月转换为准确的年月。

向后比较好办,比如当前为2019年9月,则五个月后为:

月份为:(9-1+5)%12+1=2

年份为:2019+(9-1+5)//12=2020

其中的-1操作是因为在取余运算时,9月对应的是8。取余运算完了,还得加回去。

向前看起来有点麻烦,当前仍为2019月9月,如果说10个月前,怎么计算呢?先说答案:

月份为:(9-1-10)%12+1=11

年份为:2019+(9-1-10)//12=2018

可以看出两者的公式是一模一样的,原因在于%,//的计算公式。

%的公式:r=a-n*[a//n] 其中a为被除数,n为除数,r为余数

//的公式:向下取整(a/n)

秘密在就于公式:r=a-n*[a//n],他的变形a=n*[a//n]+r,也就是说,无论a是正数或者负数,通过%,//,计算出的商和余数,总是能还原出原先的数。同时余数还总为正值,所以用于上面的月份计算非常方便。

以上相当于实现了十二进制的运算。

扩展一下,使用%,//应该可以实现任何进制的运算。

%,//的使用介绍参考:https://blog.csdn.net/sun___M/article/details/83142126

相关文章

  • python的%,//运算实现相对月份转换

    编程碰到这样一个需求: 将十个月前,五个月后的口语化的月份基于当前月转换为准确的年月。 向后比较好办,比如当前为2...

  • 1.Python-基础语法

    零散知识点 一.Python数据类型转换 二.Python算术运算符 三.Python比较运算符 == != > ...

  • Python学习笔记Day3 - Python运算符

    1. Python 类型转换 2. Python算术运算符 2.1加法(+)运算符 运行结果: sum1=107,...

  • python中的一些小技巧

    Python 中的*运算符可以将元组转换为参数列表 spiro=Spiro(*rparams) 来源:Python...

  • DFT与卷积

    利用DFT可以大大加快卷积运算的速度。卷积定理:空间域的卷积运算可以转换为频域的乘法运算。具体实现是将图片转换到频...

  • day02 Python基础

    目录 01 Python基础 02 Python基础语法 03 变量 04 运算符 05 进制转换 01-heol...

  • python中的三目运算

    相对于C语言的三木运算判断: exp1 ?exp2 : exp3 Python的三目运算有很大的差别,Python...

  • python学习之公共操作方法

    python黑马程序员学习记录 一 公共操作方法 运算符公共方法容器类型转换 二 运算符 运算符描述支持的容器类型...

  • Python 自增和语言的设计原理

    Python3 运算符 - 笔记列表 python 没有自增运算符,自增操作是如何实现的。关于自增操作,pytho...

  • 在RK3399上使用openCL和numpy对比

    点乘的python实现 python里的点乘非常简单,通过numpy自带的运算符号numpy.dot即可实现,以下...

网友评论

      本文标题:python的%,//运算实现相对月份转换

      本文链接:https://www.haomeiwen.com/subject/iekgyctx.html