Python中print(5*2*3.14)输出结果异常求助(版本3.10.5)
Python 3.10.5中
5*2*3.14计算结果不符合预期的解决办法 这是浮点数的二进制精度限制导致的问题:十进制的3.14无法被二进制浮点数精确存储,计算过程中会累积微小的精度误差,最终输出类似31.400000000000002的结果,而非预期的31.4。
以下是几种可行的解决方法:
- 使用
round()函数对结果四舍五入,保留指定小数位:print(round(5*2*3.14, 2)) # 输出31.4 - 借助
decimal模块精确控制计算精度,避免浮点数误差:from decimal import Decimal, getcontext getcontext().prec = 3 result = Decimal('5') * Decimal('2') * Decimal('3.14') print(result) # 输出31.4 - 通过字符串格式化指定输出的小数位数,让结果符合预期显示:
# 格式化字符串方式 print("{:.2f}".format(5*2*3.14)) # 输出31.40 # f-string方式 print(f"{5*2*3.14:.2f}") # 输出31.40
内容的提问来源于stack exchange,提问作者Am.Shekari
相关产品推荐
相关产品推荐

