当前位置:首页python > 正文

Python 技巧:int 是否有范围限制(含 sys.set_int_max_str_digits 解决方案)

作者:野牛程序员:2025-12-22 10:51:14python阅读 1993
Python 技巧:int 是否有范围限制(含 sys.set_int_max_str_digits 解决方案)
# /*
# Python 技巧:int 是否有范围限制(含 sys.set_int_max_str_digits 解决方案)
# --------------------------------------------------------
# Python 的整数为“任意精度整数”,本身没有数值范围限制。
# 但为了安全(防止极大数字造成 DoS),Python 3.11+ 对
# “整数转字符串” 设置了默认最大 4300 位的限制。
#
# 如果需要转换更大的整数,可手动提升限制:
#     sys.set_int_max_str_digits(0)     → 取消限制
#     或设置为其他更高的数字
#
# 以下示例演示如何安全地处理超大整数并解除字符串转换限制。
# */

import sys

# ------------------------------------------
# 解除字符串转换限制(0 表示不限制)
sys.set_int_max_str_digits(0)

# ------------------------------------------
# 创建大整数
num_200 = 10 ** 200        # 200 位
num_5000 = 10 ** 5000      # 5001 位
num_10000 = 10 ** 10000    # 10001 位

print("200 位整数长度:", len(str(num_200)))
print("5000 位整数长度:", len(str(num_5000)))
print("10000 位整数长度:", len(str(num_10000)))

# ------------------------------------------
# 超大整数运算
a = 10 ** 8000
b = 10 ** 9000
res = a + b

print("超大整数加法完成,结果位数:", len(str(res)))

# ------------------------------------------
# 要点总结:
# 1) Python 的 int 类型没有数值范围限制;
# 2) 在 Python 3.11+ 中,整数转字符串默认限制为 4300 位;
# 3) 可通过 sys.set_int_max_str_digits(0) 关闭限制;
# 4) 超大整数占用更多内存与计算时间;
# 5) 任意精度整数适用于密码学、科学计算等场景。
# */


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • Python 技巧:int 是否有范围限制(含 sys.set_int_max_str_digits 解决方案)
  • 相关推荐

    最新推荐

    热门点击