Python中如何将BMI值格式化为两位小数(目标格式27.00)
解决BMI值显示为27.00的问题
咱们先揪出问题根源:你得到的0.002704...这个数值,明显是单位没转换对——大概率你的身高是用厘米(cm)存储的,但BMI计算公式要求身高用米(m)。比如身高170cm,直接代入计算的话是170*170=28900,体重78kg的话,78/28900≈0.002704,正好和你的结果对上。
所以正确的思路是先把身高单位转对,再计算BMI,最后处理小数显示:
方法一:先转单位再计算+保留两位小数
# 把身高从厘米转换成米(如果你的身高单位是厘米) height_in_m = profile.height / 100 bmiCalc = profile.weight / (height_in_m * height_in_m) # 用round保留两位小数 bmi = round(bmiCalc, 2) # 要是想强制显示成两位小数(比如27→27.00),用字符串格式化更稳妥 bmi_formatted = "{:.2f}".format(bmiCalc)
方法二:直接调整计算式(不单独转单位)
如果不想单独处理单位,也可以直接在计算时把身高平方除以10000(因为1米=100厘米,(cm)² = (m×100)² = m²×10000):
bmiCalc = profile.weight / ((profile.height * profile.height) / 10000) # 同样用round或格式化得到目标格式 bmi = round(bmiCalc, 2) # 打印时强制两位小数 print("{:.2f}".format(bmiCalc))
你之前的代码没用对,是因为直接用厘米计算出的数值太小,round(0.002704,2)只会得到0.0,完全不是预期结果。先把数值调整到正常BMI范围(一般18-30左右),再处理小数位就没问题啦。
内容的提问来源于stack exchange,提问作者Monard




