計算に1つ(またはそれ以上)の要素がある場合は常に結果を浮動させますか?例えばどのようにpythonがどのような型にキャストするのかを私は決めることができますか?
:分数クラスは他のオブジェクト(あなたのケースではフロート)との乗算の結果を定義するために使用__mul__
(そしておそらく__rmul__
)メソッドを実装しているため
1*1.0 # float
from fractions import Fraction
Fraction(1) * 1.0 # float
計算に1つ(またはそれ以上)の要素がある場合は常に結果を浮動させますか?例えばどのようにpythonがどのような型にキャストするのかを私は決めることができますか?
:分数クラスは他のオブジェクト(あなたのケースではフロート)との乗算の結果を定義するために使用__mul__
(そしておそらく__rmul__
)メソッドを実装しているため
1*1.0 # float
from fractions import Fraction
Fraction(1) * 1.0 # float
浮動小数点型が最も一般的な数値型であるため、引数の1つが浮動小数点型の場合、浮動小数点型に常にキャストされます。だから、浮動小数点数や他の数のインタプリタで何らかの操作(あなたのケースでの乗算)を行うと、情報を失うことなく、他の数値を浮動小数点に変換することができます(それは整数、分数またはブールです)。別の方法でそれを行うことはできません。
こちらはリンクです(https://docs.python.org/2.4/lib/typesnumeric.html) 私は忘れてしまった明白なことを示唆しています。複雑な数値は、Floatよりも多くの意味合いがあります。だから、あなたが複雑に浮かべるように倍増しようとするならば。あなたは複雑になるでしょう。
"Pythonは混合算術を完全にサポートしています。バイナリ算術演算子が異なる数値型のオペランドを持つ場合、" narrower "型のオペランドは、平方整数がlong integerよりも狭い浮動小数点よりも狭いのは複合型よりも狭いです。混合型の数の比較は同じルールを使用します。
いいえ、それは動作します。
これは、演算子のオーバーロードと呼ばれています。
編集:私はdownvotedを得た理由を理解していない。あなたの例によると、回答はです。いいえ、浮動小数点を取得するとは限りません。それは他のオブジェクトに依存します。
たとえば、あなたがPythonの分数のソースコードに__mul__
と__rmul__
の実装を見ることができます:https://hg.python.org/cpython/file/tip/Lib/fractions.py#l421とコンピューティングを行う機能:https://hg.python.org/cpython/file/tip/Lib/fractions.py#l377。
お返事ありがとうございます。私はあなたが私に関連文書を指すことができるのだろうかと思います。ありがとうございます – galaxyan
編集された回答、リンクと見積もりを提供する –