【Python】四舍五入以及格式化输出

我们在刷题的时候常常会遇到浮点型的运算,通常要求我们把结果四舍五入并规定保留几位小数。

内置函数

首先想到的就是python的内置函数round()

a = float(input())
print(round(a,2))

看似以上代码实现了对输入的数四舍五入保留两位小数,但这里的“四舍五入”并不是真正的四舍五入,由于计算机存储的是二进制,所以使用round做十进制的四舍五入会有一定的影响。

如上图,当输入5.555时,输出的结果并不是我们想要的5.56

真正的四舍五入

因此,想实现真正的四舍五入,我们可以采用以下方法,还是以保留两位小数为例。

a = float(input())
a = int(a*100+0.5)/100
print("{:.2f}".format(a))

但是这个方法也有一定的局限性

如上图,对于负数,还是没有实现四舍五入。

所以我们还得对他进行一个分类讨论,当输入负数时,把+0.5改为-0.5

a = float(input())
if a>=0:
    a = int(a*100+0.5)/100
else:
    a = int(a*100-0.5)/100
print("{:.2f}".format(a))

格式化输出

最后的格式化输出可以控制小数点后的位数,当位数不足的时候自动补0,这里介绍另一种写法,采用了f字符串。

print(f"{a:.2f}")

总结

由于round()函数在计算十进制四舍五入的时候容易出现错误,我们采用了一种数学方法。如果要保留n位小数,就先乘10^n再+或-0.5(正数就是+,负数就是-),然后套上int()再除100,最后用格式化输出"{:.nf}"

你可能感兴趣的:(python,开发语言)