2014-02-15 106 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