|
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)
複製代碼
|
|