これにより、次のような状況が発生します。
-1 ** 0.5 #=> -1
括弧だけがそれを修正します:
(-1) ** 0.5 #=> 6.123031769111886e-17+1.0i
これは予想よりも不利です1.i
が、基本的には許容範囲です。Ruby のバグに文句を言う前に、これには何らかの理由があるかどうかを知りたいですか?
これにより、次のような状況が発生します。
-1 ** 0.5 #=> -1
括弧だけがそれを修正します:
(-1) ** 0.5 #=> 6.123031769111886e-17+1.0i
これは予想よりも不利です1.i
が、基本的には許容範囲です。Ruby のバグに文句を言う前に、これには何らかの理由があるかどうかを知りたいですか?
多くの言語は、数学の演算順序に従ってモデル化することにより、演算子の優先順位テーブルを定義します。数学では、累乗は乗算よりも優先順位が高く、単項否定は乗算です。
「数字を2乗するときに数字の符号が省略される」への返信のmatzから:
数学のバックグラウンドを持つ人は、** が単項マイナスよりも高いことを優先する必要があります。それが理由です。
はい、Rubyでは優先順位が高く**
なっています。
一部の言語と-
は異なり、数値リテラルの一部として字句化されていないため、単項(-
別名-@
)です。つまり、式の結果に適用される演算子として単項-x
を-1
解析します。-@