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



我需要计算任何正多边形的面积。这个公式是我从google上得到的:

(n * l**2) / (4 * math.tan((180/n) * (math.pi/180)))

无论我如何使用这些值的decimal.Decimal,我都不能让它按预期工作。nl用浮点数表示。

有人能应用十进制对象吗?当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

最新更新