• Python中整形溢出的问题


    1. 整形的范围

    [-2^31, 2^31 - 1]

    2. 如何判断溢出

      若想判断x是否溢出,判断操作如下:

     M = (2 ^31 - 1) // 10
     y = x // 10
     z = x % 10
     if y > M or (y == M and z > 7):
       print(“溢出”)

    3. 例子

    给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
    你有注意到翻转后的整数可能溢出吗?因为给出的是32位整数,则其数值范围为[−2^31, 2^31 − 1]。翻转可能会导致溢出,如果反转后的结果会溢出就返回 0。

    示例1:

    输入:12
    输出:21

    示例2:

    输入:-123
    返回值:-321

    示例3:

    输入:1147483649
    返回值:0

    4. Code

     1 class Solution:
     2     def reverse(self, x):
     3         # 判断符号
     4         # 默认正好
     5         MAX, MIN = 2**31 - 1, -(2 ** 31)
     6         print(MAX, MIN)
     7         M = MAX // 10
     8         flag = True
     9         if x == 0:
    10             return 0
    11         elif x < 0:
    12             x = -x
    13             # 负号
    14             flag = False
    15 
    16         res = 0
    17         while x > 0:
    18             x, v = divmod(x, 10)
    19             if res > M or (res == M and v > 7):
    20                 return 0
    21             res = res * 10 + v
    22         return res if flag else -res
    23 
    24 
    25 if __name__ == '__main__':
    26     x = 2123456789
    27     print(Solution().reverse(x))

     5. 结语

      努力去爱周围的每一个人,付出,不一定有收获,但是不付出就一定没有收获! 给街头卖艺的人零钱,不和深夜还在摆摊的小贩讨价还价。愿我的博客对你有所帮助(*^▽^*)(*^▽^*)!

      如果客官喜欢小生的园子,记得关注小生哟,小生会持续更新(#^.^#)(#^.^#)。

    但行好事 莫问前程
  • 相关阅读:
    常用模块——time模块,datetime模块
    开发目录的规范

    模块
    day17作业
    面向过程编程
    函数递归
    谈谈作为一个菜B的培训感受
    絮叨机房精密空调的制冷剂
    接入机房产生冷凝水
  • 原文地址:https://www.cnblogs.com/haifwu/p/15311178.html
Copyright © 2020-2023  润新知