我是Sympy的新手,并且已经意识到计算和简化代数表达式非常好。
然而,当我写出实数的分数时,它返回零(对于像'x'这样的符号分数没有问题)。我做错了什么?
from sympy import *
1./2
Out[2]: 0.5
1/2
Out[3]: 0
答案 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)/2
。 S
函数会将1
转换为SymPy的Integer(1)
,然后在除以时变为Rational
。