如何在二分法近似值Python代码中使用''.format()规避科学计数法?
问题解答
用.format()控制小数显示格式完全可行,核心是在输出i的位置替换掉原有的str(i)用法。另外你的代码里精度判断逻辑存在缺陷,下面是具体修正方案:
1. 字符串格式化的正确用法
在所有需要打印i的地方,用格式化字符串强制按指定小数位数显示,避免科学计数法:
- 循环内的打印语句改为:
print("{0:.{1}f}".format(i, j)) - 最终结果打印改为:
print("Le résultat final est {0:.{1}f}".format(i, j))
其中.{1}f表示用参数j动态指定小数位数,这样无论数值多小,都会以固定小数格式展示,不会触发科学计数法。
2. 修正精度判断逻辑
原代码用len(str(i-int(i))) < j判断精度的方式不可靠:当数值小到触发科学计数法时,str(i)会变成类似6.103515625e-05,此时字符串长度和实际小数位数完全不匹配。
改用数值阈值判断更稳妥:计算一个精度阈值,当i的绝对值小于该阈值时,说明已达到j位小数的精度要求。
修正后的完整代码
def solveByDichotomy(i, j, k): r = 0 # 计算精度阈值:确保保留j位小数时的最小误差范围 threshold = 10 ** (-j) / 2 while abs(i) >= threshold: i = i / 2 r += 1 if k: # 按j位小数格式打印中间结果 print("{0:.{1}f}".format(i, j)) # 按j位小数格式打印最终结果 print("Le résultat final est {0:.{1}f}".format(i, j)) print("La résolution fut composée de {} étapes.".format(r))
补充说明
if k == True可简化为if k,符合Python代码风格- 数值阈值判断逻辑避免了字符串转换带来的不确定性,精度控制更准确
内容的提问来源于stack exchange,提问作者Cqrbon
相关产品推荐
相关产品推荐

