对于具有实数的分数,Sympy返回零

时间:2014-02-15 15:14:47

标签: python sympy fractions

我是Sympy的新手,并且已经意识到计算和简化代数表达式非常好。

然而,当我写出实数的分数时,它返回零(对于像'x'这样的符号分数没有问题)。我做错了什么?

from sympy import *

1./2
Out[2]: 0.5

1/2
Out[3]: 0

2 个答案:

答案 0 :(得分:7)

这是因为python(2.7)需要浮点分母或分子才能返回浮点数。

在python 3.x中,任何除法都会返回一个浮点数

你也可以通过使用:

在python 2.7中“修复”
from __future__ import division

实际上python遵循整数除法规则并返回一个整数而不是一个浮点数

答案 1 :(得分: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