Python编写倒计时程序输出出现异常多余小数位如何解决
问题根源
这是典型的二进制浮点数精度误差:计算机使用二进制存储数值,十进制下的0.1无法被二进制浮点数精确表示,每次执行减0.1的操作都会累积微小的计算偏差,最终打印时就会出现那些冗长的不规则小数。
修复方法
两种常用实现都可以输出规整的倒计时数值:
方案1:打印时控制小数精度(改动最小)
不需要调整原有运算逻辑,只需要在输出环节对数值做精度处理即可。注意原代码循环20次最终不会输出0,需要把循环次数调整为21次才能覆盖从2到0的完整序列:import time starting_num = 2 for i in range(21): time.sleep(0.1) print(round(starting_num, 1)) # 四舍五入保留1位小数 starting_num -= 0.1也可以用字符串格式化实现相同效果,不需要调用round函数:
print(f"{starting_num:.1f}")方案2:整数计数规避浮点误差(稳定性更高)
全程用整数做递减计数,输出时再转换为对应小数,从根源上避免浮点数累积误差:import time # 从20递减到0,每次除以10就得到2.0、1.9...0的序列 for count in range(20, -1, -1): time.sleep(0.1) print(count / 10)
内容的提问来源于stack exchange,提问作者diamondog
相关产品推荐
相关产品推荐

