前提・実現したいこと
python3にて固定小数点演算のプログラムを実現する際に、クラスでシフト後の数(以後vs)とシフト数(dps)を持つクラスを自作しました。
同じクラス変数同士の四則演算はできたのですが後の演算中に、vsとfloat型のかけ算を行うことのできるようにしたいです。
どのようにすればよいか教えて下さい。
もっと簡単な方法があればぜひ教えて下さい。
発生している問題・エラーメッセージ
TypeError: unsupported operand type(s) for *: 'float' and 'S16q10'
該当のソースコード
class S16q10(object): def __init__(self, double_num = 0.0, dps = 10): self.vs = (double_num) * (1 << 10) self.dps = dps def __mul__(self, other): if type(self) != S16q10: a = other other = self self = a if type(other) != S16q10: another = S16q10(other) return S16q10((self.vs * another.vs)/(1<<2*self.dps)) else: return S16q10((self.vs * other.vs)/(1 << 2*self.dps))
試したこと
上記コードを試してみましたが、クラス変数*floatの順はできたが逆順になると不可
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー