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. 结语
努力去爱周围的每一个人,付出,不一定有收获,但是不付出就一定没有收获! 给街头卖艺的人零钱,不和深夜还在摆摊的小贩讨价还价。愿我的博客对你有所帮助(*^▽^*)(*^▽^*)!
如果客官喜欢小生的园子,记得关注小生哟,小生会持续更新(#^.^#)(#^.^#)。
但行好事 莫问前程