2
如何在SymPy中使用其他基礎系統?我願做類似Rational(string)
但不能在基地的東西10在SymPy中使用其他基礎系統
如何在SymPy中使用其他基礎系統?我願做類似Rational(string)
但不能在基地的東西10在SymPy中使用其他基礎系統
你最需要的是可以在Python:
def sdigits(s, b, tuple=False):
p = len(s.split('.')[1])
n, d = (int(s.replace('.', ''), base=b), b**p)
if tuple:
return n, d
return '%s/%s' % (n, d)
這就產生了如下,
sdigits('1.1', 3) -> '4/3'
sdigits('1.01', 3) -> '10/9'
sdigits('-1.12', 3) -> '-14/9'
sdigits('-1.12', 3, tuple=True) -> (-14, 9)
sdigits('1.2', 4) -> '6/4'
要受益於SymPy提供簡化比率的能力,您可以將任一輸出傳遞給Rational:
Rational(sdigits('1.2', 4)) -> 3/2
Rational(*sdigits('1.2', 4, tuple=True)) -> 3/2
I對SymPy知之甚少,但無論您用什麼基礎來表示它們,理性數字都是理性的。它只是解析你需要的另一個基礎,或者你確實需要結果是一個'Rational'對象嗎?你能舉一個你需要轉換的字符串的例子嗎? – Blckknght
@Blckknght例如,我可能想要將字符串1.1轉換爲4/3,使用3作爲基礎。 – HyperNeutrino
我對您的術語有點困惑。您的字符串「1.1」是否已經在第3位?那麼它將對應於基數10中的4/3,它等於基數3中的11/10。或者是基數爲10的字符串,並且您想要轉換爲基數3?基數10中的1.1是1.002200220022 ...基數3中是基數3中的102/101。 – Hannebambel