在Python中精确到2个小数点

时间:2019-06-30 11:45:30

标签: python python-3.x

print(round((8/4),2))给出2.0而不是2.00。如果我希望精度达到2个小数点并且不想在Python中使用print("{0:.2f}".format(8/4))

,该怎么办?

round()有可能吗?

3 个答案:

答案 0 :(得分:1)

使用decimal模块和quantize方法(doc):

from decimal import Decimal

print((Decimal(8)/Decimal(4)).quantize(Decimal('1.00')))

打印:

2.00

答案 1 :(得分:1)

  

print(round((8/4),2))给出2.0,而不是2.00。

实际上它给出2,因为它可以由基础的基数2(二进制)算术精确表示。重要的是要意识到,任何显示实际上都是一种错觉:您只是舍入了真实机器值的显示。

  

如果我希望精度达到2个小数点并且不想在Python中使用print(“ {0:.2f}”。format(8/4))

这取决于您的意思。您是否想要一个可以在1.995到2.005之间的小数,等等。在这种情况下,您可能会寻找像小数模块这样的结构化数据包装器,但是如果您只关心显示值而不是格式化,那就行了。

  

round()是否可能?

将2的真实值四舍五入得到2。您无法比2更接近2的精确值。

https://docs.python.org/3/tutorial/floatingpoint.html

答案 2 :(得分:0)

您可以使用fstring代替格式:

a = 8 / 2
precision = 2
print(f"{a: .{precision}f}")

输出:

4.00