在此表达式中正确使用Decimal对象

时间:2016-10-05 19:00:30

标签: python python-3.x decimal

我需要计算任何正多边形的面积。我从一个好的'google:

获得了这个公式
(n * l**2) / (4 * math.tan((180/n) * (math.pi/180)))

无论我如何使用decimal.Decimal这些值,我都无法按预期使用它。 nl以浮点数形式提供。

有人可以将十进制对象应用于此吗?当n为4且l为2时,它应返回4,但目前它会返回4.00000000000000156234(或沿着这些行的某些内容)。

1 个答案:

答案 0 :(得分:1)

您需要设置小数对象的精度。 Pi是无限的十进制数,因此精度不会是整数。

你可以做到

from decimal import *

getcontext().prec = 1

或通过向下舍入添加到小数对象。

>>> Decimal('7.325').quantize(Decimal('.01'), rounding=ROUND_DOWN)
Decimal('7.32')

take from docs