2014-02-15 76 views
1

我是Sympy的新手,并且已经意识到它对计算和简化代数表达式非常有用。Sympy返回实数零分数为零

但是,当我写实数的小数部分时,它返回零(像'x'这样的小数部分没有问题)。我究竟做错了什么?

from sympy import * 

1./2 
Out[2]: 0.5 

1/2 
Out[3]: 0 

回答

7

这是因为python(2.7)在分母或分子中需要一个浮点数来返回浮点数。

在Python 3.x的任何分裂返回一个float

你也可以“修复”在Python 2.7,通过使用:

from __future__ import division 

其实蟒蛇按照整数除法规则,并返回一个整数而不是浮点数

0

1/2根本不使用SymPy。这只是由Python评估。读一读http://docs.sympy.org/latest/tutorial/gotchas.html#two-final-notes-and(我其实推荐阅读whole SymPy tutorial)。

基本上,如果你使用的是SymPy,你可能需要一个理性的数字,你可以用Rational(1, 2)得到。键入这个更简单的方法是S(1)/2S函数将1转换为SymPy的Integer(1),然后在除以时变为Rational

+0

我知道。如果我想要求解如下方程,就会出现问题:x - 1/2 + a = 0,并且您得到的结果是x = -a而不是x = 1/2 - a – user3218615