| 
 | 
 
 
print輸出int,錯誤 ValueError: Exceeds the limit (4300) for integer string conversion;use sys.set_int_max 
 
在某次輸出number時,遇到這個問題 
 
ValueError: Exceeds the limit (4300) for integer string conversion; use sys.set_int_max_str_digits() to increase the limit 
 
大概可以翻譯出來: 
 
值錯誤:超出limit(4300)整數字串的轉化,使用sys.set_int_max_str_digits()去增加限制 
輸出一下sys.set_int_max_str_digits()的幫助訊息 
 
- print(help(sys.set_int_max_str_digits))
 
  複製代碼 
 
幫助內容如下: 
Help on built-in function set_int_max_str_digits in module sys: 
- set_int_max_str_digits(maxdigits)
 
  複製代碼 
    Set the maximum string digits limit for non-binary int<->str conversions. 
 
 
這是一個控制非二進制整數與字串互轉最大數字限制的方法。 
可以傳入一個參數數字去控制。 
沒有談到這個maxdigits是怎麼控制的,這個文件內容有點坑。 
 
我們印數字時,出現了limit(4300)的錯誤,所以可以推斷,這個數字應該是不可以超過4300個位置大小的。 
 
所以嘗試一下 
 
 
 
他是報錯的,然而當你嘗試 
 
 
 
這時候,他是正常輸出的 
 
所以maxdigits應該就是這個可以控制輸出數位的一個參數。我們來調整成maxdigits==4400,測試結果。 
 
測試用例1 
- import sys
 
 - sys.set_int_max_str_digits(4400)
 
  
- try: 
 
 -     print(10**4400)
 
 - except ValueError as e:
 
 -     print('超出限制: ' + str(e))
 
  複製代碼 
 
測試用例2 
- import sys
 
 - sys.set_int_max_str_digits(4400)
 
  
- try: 
 
 -     print(10**4399)
 
 - except ValueError as e:
 
 -     print('超出限制: ' + str(e))
 
  複製代碼 
 
可以發現,測試案例1出現異常,測試案例2正常輸出 
 
- # 测试用例1输出
 
 - 超出限制: Exceeds the limit (4400) for integer string conversion; use sys.set_int_max_str_digits() to increase the limit
 
  
- # 测试用例2输出
 
 - 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
 
  複製代碼 
 
由此,我們可以手動去設定maxdigits去調整這個print輸出前轉換的限制,也有一個方法,可以讓這個不受限制,就是讓maxdigits==0 
只需要輸入下面的程式碼: 
 
- import sys
 
 - sys.set_int_max_str_digits(0)
 
  複製代碼 
 
 
 |   
 
 
 
 |