8

我刚刚在编程语言 ruby​​ 中发现了一个奇怪的问题,这不是一个大问题,但我就是不明白为什么会这样。如果有人知道我的问题的问题,我会很感兴趣。

在 ruby​​ 中,你可以写0or 00,没关系,它会得到相同的结果。
如果您运行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​​ 看到一个多于两位的数字以字符 0 开头时,它会将其解析为八进制整数。因此,当它解析 00 时,它是八进制的 0,与十进制的 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 词法分析器并不期待这种形式的浮点数。

于 2012-04-16T18:14:36.770 回答