我需要计算任何正多边形的面积。这个公式是我从google上得到的:
(n * l**2) / (4 * math.tan((180/n) * (math.pi/180)))
无论我如何使用这些值的decimal.Decimal
,我都不能让它按预期工作。n
和l
用浮点数表示。
有人能应用十进制对象吗?当n
为4,l
为2时,它应该返回4
,但目前它返回4.00000000000000156234
(或沿着这些行)。
需要设置十进制对象的精度。圆周率是一个无限十进制数,因此精度不会是整数。
你可以做
from decimal import *
getcontext().prec = 1
或通过四舍五入对十进制对象进行相加。
>>> Decimal('7.325').quantize(Decimal('.01'), rounding=ROUND_DOWN)
Decimal('7.32')
from docs