8

プログラミング言語 ruby​​ に奇妙な問題が見つかりました。大きな問題ではありませんが、なぜそれが起こるのか理解できません。誰かが私の問題を知っているなら、それは私に興味があります。

0ruby ではorと書けますが、どちらでも構い00ません。同じ結果になります。
実行すると、2 つの入力がまったく同じであるという意味 0 === 00も得られます。true

0.0も等しい0ので、論理的に00.0も等しいはず0.0ですが、問題は、数値を使用しようとすると00.0エラーが発生することです。たとえば、次のように実行します。

a = 00.0

次のエラーが表示されます。

構文エラー、予期しない tINTEGER

もちろん、これは小さな問題であることはわかっていますが、前述のように、コンピューターが?00.0と同じように扱わない理由を理解したいと思います。0.0

4

2 に答える 2

4

問題は、解析して ruby​​ が 2 桁を超える数字が文字 0 で始まることを確認すると、それを 8 進整数として解析することです。したがって、00 を解析すると、10 進数の 0 と同じ 8 進数の 0 になります。しかし、それが見つかった場合。それは無効な整数であり、それが示すエラーです。

于 2012-04-16T18:15:24.573 に答える
1

http://tryruby.comで「a = 00.0」を試したところ、次のようになりました。

SyntaxError: no .<digit> floating literal anymore put 0 before dot. near line 1: ""

明らかに、Ruby lexer はその形式の float を想定していません。

于 2012-04-16T18:14:36.770 に答える