我返回的平均值在小数位方面看起来不正确 (Python) [重复]

My returned average does not look right in terms of decimal places (Python) [duplicate]

提问人:Sal 提问时间:1/5/2023 更新时间:1/5/2023 访问量:35

问:

我返回的平均值在小数点后位置使用+str作为变量看起来不正确。

我下面的代码应该提供 25.83,但我得到 25.830000000002

total_bmi = 0

for bmi in bmis:
  total_bmi += float(bmi)

average_bmi = total_bmi/len(bmis)
print("Average BMI: " + str(average_bmi))
Python 字符串 浮点

评论

1赞 Karl Knechtel 1/5/2023
当我到达这里时,自动生成的评论有 5 个赞成票,提出了一个重复的问题。如果您认为某些东西是重复的,并且您拥有投出接近票数所需的声誉,请实际投票给接近重复票,不要只是对“这回答了您的问题吗?”的评论投赞成票。特别是如果这是一个常见问题,就像这里一样。

答:

-1赞 madhurkant 1/5/2023 #1

其原因是浮点数在硬件中的存储方式。无需赘述,只需使用:

total_bmi = 0

for bmi in bmis:
  total_bmi += float(bmi)

average_bmi = total_bmi/len(bmis)
print("Average BMI: " + str(round(average_bmi, 2)))

评论

1赞 Mark Dickinson 1/5/2023
不要用于此目的;使用字符串格式。这就是它的用途。.或。roundprint(f"Average BMI: {average_bmi:.2f}")print("Average BMI: {:.2f}".format(average_bmi))