Ich habe gerade ein seltsames Problem in der Programmiersprache Ruby gefunden, es ist kein großes Problem, aber ich kann einfach nicht verstehen, warum es passiert. Es würde mich interessieren, wenn jemand das Problem für mein Problem kennt.
In Ruby können Sie 0
oder 00
schreiben, das ist egal, es kommt zum selben Ergebnis.
Wenn Sie 0 === 00
ausführen, erhalten Sie auch true
, was bedeutet, dass die beiden Eingaben genau gleich sind.
0.0
entspricht auch 0
, also logisch 00.0
sollte auch gleich 0.0
sein, aber das Problem ist,
Wenn Sie versuchen, die Zahl 00.0
zu verwenden, erhalten Sie nur einen Fehler. Wenn Sie zum Beispiel laufen:
Sie erhalten diesen Fehler:
Syntaxfehler, unerwarteter TINTEGER
Natürlich weiß ich, dass dies ein kleines Problem ist, aber wie gesagt, ich möchte verstehen, warum der Computer 00.0
nicht genauso behandelt wie 0.0
?
Wenn Parsing und Ruby sehen, dass eine Zahl mit mehr als zwei Ziffern mit dem Zeichen 0 beginnt, parst sie es als eine oktale ganze Zahl. Also, wenn es 00 analysiert, ist es 0 in Oktal, das ist gleich 0 in Dezimal. Aber wenn es ein findet. dann ist es eine ungültige ganze Zahl und das ist der Fehler, den es zeigt.
Ich habe versucht "a = 00.0" in Ссылка und habe:
%Vor%Offensichtlich erwartet der Ruby-Lexer diese Form von float nicht.