4

これにより、次のような状況が発生します。

-1 ** 0.5 #=> -1

括弧だけがそれを修正します:

(-1) ** 0.5 #=> 6.123031769111886e-17+1.0i

これは予想よりも不利です1.iが、基本的には許容範囲です。Ruby のバグに文句を言う前に、これには何らかの理由があるかどうかを知りたいですか?

4

2 に答える 2

6

多くの言語は、数学の演算順序に従ってモデル化することにより、演算子の優先順位テーブルを定義します。数学では、累乗は乗算よりも優先順位が高く、単項否定乗算です。

「数字を2乗するときに数字の符号が省略される」への返信のmatzから:

数学のバックグラウンドを持つ人は、** が単項マイナスよりも高いことを優先する必要があります。それが理由です。

于 2012-11-11T06:32:05.077 に答える
4

はい、Rubyでは優先順位が高く**なっています。

一部の言語と-は異なり、数値リテラルの一部として字句化されていないため、単項-別名-@)です。つまり、式の結果に適用される演算子として単項-x-1解析します。-@

于 2012-11-11T06:33:25.837 に答える