Try this one:

n [1]: z = symbols('z')

In [2]: expr = 2*z

In [3]: e2 = expr.evalf()

In [4]: e2
Out[4]: 2.0⋅z

In [5]: def exact_float_to_int(x):
   ...:     if isinstance(x, (float, Float)):
   ...:         return Integer(x)
   ...:     return x
   ...: 

In [6]: from sympy.strategies.traverse import bottom_up

In [7]: bottom_up(exact_float_to_int)(e2)
Out[7]: 2⋅z


Explanation: SymPy expressions are trees (data structures), *bottom_up* 
applies the defined function from the bottom nodes of the expression tree 
up to the trunk.

On Monday, 14 September 2015 21:18:21 UTC+2, Christopher Ahern wrote:
>
> For an expression evalf converts integers to floats.
>
>     z = symbols('z')
>     expr = 2*z
>     expr.evalf()
>
> This yields 2.0*z. Assuming that the coefficients in the expression are 
> actually integers, is there a way to convert them from floats to integers 
> in SymPy while leaving everything else as is?
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/ddb9a97a-a301-4811-8c37-d3f8789c5ea8%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to