Skip to content

Address unsupported operand type(s): 'decimal.Decimal' and 'float' - #47

Open
rafaelweingartner wants to merge 1 commit into
gunthercox:masterfrom
rafaelweingartner:address-mixed-number-operations
Open

rafaelweingartner wants to merge 1 commit into
gunthercox:masterfrom
rafaelweingartner:address-mixed-number-operations

Conversation

@rafaelweingartner

@rafaelweingartner rafaelweingartner commented Sep 26, 2026 •

Copy link
Copy Markdown

This patch address a situation around mixed type operations. For instance, the following expression, "(1 + 3 + 2.0 + 6) * 0.00001", when evaluated, causes the following error:

>>> from mathparse import mathparse
>>> mathparse.parse("(1 + 3 + 2.0 + 6) * 0.00001")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
File "/home/rafael/git/mathparse/mathparse/mathparse.py", line 792, in
parse
    tokens = tokenize(string, language)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/rafael/git/mathparse/mathparse/mathparse.py", line 570, in
evaluate_postfix
    total = to_number(a) + to_number(b)
            ~~~~~~~~~~~~~^~~~~~~~~~~~~~
TypeError: unsupported operand type(s) for *: 'decimal.Decimal' and
'float'

This patch normalizes the "to_number" operation, to always return Decimal objects. Therefore, the error will not occur, by mixing Number types.

This patch address situation around mixed type operations. For instance,
the following expression, "(1 + 3 + 2.0 + 6) * 0.00001", when evaluated,
causes the following error:

```
>>> from mathparse import mathparse
>>> mathparse.parse("(1 + 3 + 2.0 + 6) * 0.00001")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
File "/home/rafael/git/mathparse/mathparse/mathparse.py", line 792, in
parse
    tokens = tokenize(string, language)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/rafael/git/mathparse/mathparse/mathparse.py", line 570, in
evaluate_postfix
    total = to_number(a) + to_number(b)
            ~~~~~~~~~~~~~^~~~~~~~~~~~~~
TypeError: unsupported operand type(s) for *: 'decimal.Decimal' and
'float'

```

This patch normalizes the "to_number" operation, to always return
Decimal objects. Therefore, the error will not occur, by mixing  Number
types.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant