我是Sympy的新手,並且已經意識到它對計算和簡化代數表達式非常有用。Sympy返回實數零分數爲零
但是,當我寫實數的小數部分時,它返回零(像'x'這樣的小數部分沒有問題)。我究竟做錯了什麼?
from sympy import *
1./2
Out[2]: 0.5
1/2
Out[3]: 0
我是Sympy的新手,並且已經意識到它對計算和簡化代數表達式非常有用。Sympy返回實數零分數爲零
但是,當我寫實數的小數部分時,它返回零(像'x'這樣的小數部分沒有問題)。我究竟做錯了什麼?
from sympy import *
1./2
Out[2]: 0.5
1/2
Out[3]: 0
這是因爲python(2.7)在分母或分子中需要一個浮點數來返回浮點數。
在Python 3.x的任何分裂返回一個float
你也可以「修復」在Python 2.7,通過使用:
from __future__ import division
其實蟒蛇按照整數除法規則,並返回一個整數而不是浮點數
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
。
我知道。如果我想要求解如下方程,就會出現問題:x - 1/2 + a = 0,並且您得到的結果是x = -a而不是x = 1/2 - a – user3218615