Issue 11680: decimal module generates AttributeError: on call to as_integer_ratio (original) (raw)
Issue11680
Created on 2011-03-26 00:45 by daveabailey, last changed 2022-04-11 14:57 by admin. This issue is now closed.
Messages (3) | ||
---|---|---|
msg132194 - (view) | Author: David Bailey (daveabailey) | Date: 2011-03-26 00:45 |
File "C:\test3.py", line 166, in m self.from_float(value * decimal.Decimal(1.0))/decimal.Decimal(1.0) File "c:\Python27\lib\decimal.py", line 691, in from_float n, d = abs(f).as_integer_ratio() AttributeError: 'Decimal' object has no attribute 'as_integer_ratio' line 691 in decimal.py n, d = abs(f).as_integer_ratio() should be n, d = _math.fabs(f).as_integer_ratio() | ||
msg132218 - (view) | Author: Daniel Urban (daniel.urban) * ![]() |
Date: 2011-03-26 08:44 |
The problem seems to be that you're calling Decimal.from_float with a Decimal instance, not a float. I'm not sure that should even work. The Decimal constructor can create a decimal from an other decimal. Your suggested solution probably would solve this exception, but I'm not sure it would be the good solution. This way when creating a decimal from another decimal with from_float (which doesn't makes much sense, I think) could result in a loss of precision: >>> Decimal(Decimal('0.999999999999999999999')) Decimal('0.999999999999999999999') >>> >>> math.fabs(Decimal('0.999999999999999999999')) 1.0 >>> | ||
msg132219 - (view) | Author: Mark Dickinson (mark.dickinson) * ![]() |
Date: 2011-03-26 09:06 |
As Daniel says, from_float expects a float object, not a Decimal instance. What did you want to achieve in the following line: self.from_float(value * decimal.Decimal(1.0))/decimal.Decimal(1.0) ? By the way: in all current versions of Python, from_float is redundant: you can create a Decimal directly from a float: Python 2.7.1+ (2.7:d52b1faa7b11+, Mar 25 2011, 21:48:24) [GCC 4.2.1 (Apple Inc. build 5664)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> from decimal import Decimal [64140 refs] >>> Decimal(2.3) Decimal('2.29999999999999982236431605997495353221893310546875') [64149 refs] |
History | |||
---|---|---|---|
Date | User | Action | Args |
2022-04-11 14:57:15 | admin | set | github: 55889 |
2011-03-26 09:06:41 | mark.dickinson | set | status: open -> closednosy: + mark.dickinsonmessages: + resolution: not a bug |
2011-03-26 08:44:33 | daniel.urban | set | versions: + Python 3.1, Python 3.2, Python 3.3nosy: + daniel.urbanmessages: + type: crash -> behavior |
2011-03-26 00:45:37 | daveabailey | create |