2
SymPyで別のベースシステムを使用するにはどうすればよいですか?私はRational(string)
に似ていないベースで何かをしたいと思います10SymPyの他のベースシステムの使用
SymPyで別のベースシステムを使用するにはどうすればよいですか?私はRational(string)
に似ていないベースで何かをしたいと思います10SymPyの他のベースシステムの使用
あなたが必要なもののほとんどは、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を基底3を使用して4/3に変換するとよいでしょう。 – HyperNeutrino
用語について少し混乱します。あなたの文字列 "1.1"はすでにベース3にありますか?次に、基数10の4/3に相当し、基数3の11/10に相当します。または、基数10の文字列が基数3に変換したいですか?ベース10の1.1はベース3の1.002200220022 ...ベース3の102/101です。 – Hannebambel