Add support for trunc().

This commit is contained in:
Raymond Hettinger 2008-01-24 19:05:29 +00:00
parent 71dba4ccee
commit 5a05364049
2 changed files with 13 additions and 0 deletions

View File

@ -1433,6 +1433,8 @@ class Decimal(object):
else:
return s*int(self._int[:self._exp] or '0')
__trunc__ = __int__
def __long__(self):
"""Converts to a long.

View File

@ -1151,6 +1151,7 @@ class DecimalUsabilityTest(unittest.TestCase):
checkSameDec("__floordiv__", True)
checkSameDec("__hash__")
checkSameDec("__int__")
checkSameDec("__trunc__")
checkSameDec("__long__")
checkSameDec("__mod__", True)
checkSameDec("__mul__", True)
@ -1216,6 +1217,16 @@ class DecimalPythonAPItests(unittest.TestCase):
r = d.to_integral(ROUND_DOWN)
self.assertEqual(Decimal(int(d)), r)
def test_trunc(self):
for x in range(-250, 250):
s = '%0.2f' % (x / 100.0)
# should work the same as for floats
self.assertEqual(int(Decimal(s)), int(float(s)))
# should work the same as to_integral in the ROUND_DOWN mode
d = Decimal(s)
r = d.to_integral(ROUND_DOWN)
self.assertEqual(Decimal(trunc(d)), r)
class ContextAPItests(unittest.TestCase):
def test_pickle(self):