New submission from Mark Dickinson <dicki...@gmail.com>: Observed by Terry Reedy in the issue #25735 discussion (msg255479):
>>> factorial(decimal.Decimal(5.2)) 120 This should be either raising an exception (either ValueError or TypeError, depending on whether we want to accept only integral Decimal values, or prohibit Decimal values altogether), or possibly returning an approximation to Gamma(6.2) (=169.406099461722999629...) I'd prefer that we prohibit a Decimal input altogether, but accepting integral Decimal instances would parallel the current behaviour with floats: >>> factorial(5.2) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: factorial() only accepts integral values >>> factorial(5.0) 120 Terry also observed: >>> factorial(Fraction(5)) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: an integer is required (got type Fraction) ---------- messages: 313912 nosy: facundobatista, mark.dickinson, rhettinger, skrah, terry.reedy priority: normal severity: normal status: open title: math.factorial accepts non-integral Decimal instances type: behavior versions: Python 2.7, Python 3.7, Python 3.8 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue33083> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com