美文网首页
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的%,//运算实现相对月份转换

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