查询Python支持的最大正浮点数代码出现死循环如何解决
问题定位与修复方案
核心问题点
- 打印变量名错误:你定义的计数变量为
max_precision,但最后打印的是未定义的precision,即便循环正常结束也会抛出NameError。 - 死循环根因:运行当前代码前你意外覆盖了Python内置的
float类或正无穷定义,导致float('inf')返回值不是标准的正无穷大,循环判断条件永远成立。另外你将变量命名为max,覆盖了Python内置的max()最大值函数,属于不规范命名,容易引发其他隐藏问题。
修复后可正常运行的代码
current_val = 1 precision_count = 1 # 提前定义正无穷常量,避免循环中重复调用同时规避内置对象被覆盖的影响 INF = float('inf') while current_val != INF: current_val *= 10 precision_count += 1 print(precision_count)
运行后即可输出预期结果309。
拓展:更简便的查询方法
Python标准库sys模块已经内置了浮点数相关的参数,可以直接查询无需手动计算:
import sys # max_10_exp表示最大的整数指数,使得10**exp为有限浮点数,值为308,加1即可得到你要的309结果 print(sys.float_info.max_10_exp + 1)
内容的提问来源于stack exchange,提问作者Bath
相关产品推荐
相关产品推荐

