python 保留小数位数问题

#遇到的问题

img

#代码

num=0
end=0
tot=0
count=0
while(num!=-1):
    num=int(input("Anna kurssiarvosana väliltä 1-5 (-1 lopettaa): "))
    tot=tot+num
    count=count+1
    if(num not in range(1,6) and num!=-1):
        print("Väärä syöte. Vain arvosanat 1-5 kelpaavat (-1 lopettaa).")
        count=count-1
        tot=tot-num
        continue
    if(num==-1):
        tot=tot+1
        count=count-1
        break
end=tot/count

print("Arvosanojen keskiarvo on %.2f."%end)



print("Arvosanojen keskiarvo on %.2f."%end)
->
print("Arvosanojen keskiarvo on %.2f"%end.rstrip('0').rstrip('.') + ".")


end=f"{tot/count:.2f}".rstrip('0')
print("Arvosanojen keskiarvo on %s."%end)

先格式化输出结果为字符串,再用字符串方法str.rstrip('0')去除小数部分右边的'0'字符就好。

  • 代码运行效果截屏图片

    img

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:

在你的代码中,使用了字符串格式化操作来保留小数位数,"%.2f"表示保留两位小数。

具体来说,在这行代码中:

print("Arvosanojen keskiarvo on %.2f."%end)

%.2f表示将end变量的值格式化为带有两位小数的浮点数,然后将其插入到字符串中。

如果你想要保留更多或更少的小数位数,只需要相应地改变格式化字符串中的数字即可。例如,如果你想要保留三位小数,可以使用"%.3f";如果你想要保留一位小数,可以使用"%.1f"


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

最后是这么着

num=0
end=0
tot=0
count=0
while(num!=-1):
    num=int(input("Anna kurssiarvosana väliltä 1-5 (-1 lopettaa): "))
    tot=tot+num
    count=count+1
    if(num not in range(1,6) and num!=-1):
        print("Väärä syöte. Vain arvosanat 1-5 kelpaavat (-1 lopettaa).")
        count=count-1
        tot=tot-num
        continue
    if(num==-1):
        tot=tot+1
        count=count-1
        break
end=tot/count
su=round(end,2)
print(f"Arvosanojen keskiarvo on {su}".rstrip('0').rstrip('.') + ".")