00.0与0.0不一样吗?

时间:2012-04-16 18:07:52

标签: ruby numbers

我刚刚在编程语言ruby中发现了一个奇怪的问题,这不是一个大问题,但我只是无法理解它为什么会发生。如果有人知道我的问题的问题,我会感兴趣。

在红宝石中你可以写000,这无关紧要,它会得到相同的结果。
如果您运行0 === 00,您还会得到true,这意味着两个输入完全相同。

0.0也等于0,因此逻辑上00.0也应该等于0.0,但问题是, 如果您尝试使用数字00.0,那么您将收到错误。如果您运行例如:

a = 00.0

您收到此错误:

  

语法错误,意外的tINTEGER

当然我知道这是一个小问题,但正如我所说,我想了解为什么计算机不会将00.00.0一样对待?

2 个答案:

答案 0 :(得分:4)

问题在于,当解析和ruby看到一个数字超过两位的数字以字符0开头时,它会将其解析为八进制整数。因此,当它解析00时,它在八进制中为0,与十进制中的0相同。但如果它找到了。那么它是一个无效的整数,这就是它显示的错误。

答案 1 :(得分:1)

我在http://tryruby.com尝试了“a = 00.0”,得到了:

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

显然,Ruby lexer并不期望浮动形式。