00.0与0.0不一样吗?

evo*_*pid 8 ruby numbers

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

在红宝石中你可以写,0或者00,无关紧要,它会得到相同的结果.
如果你运行0 === 00你也true意味着两个输入是完全相同的.

0.0也等于0,所以逻辑上00.0也应该相等,0.0但问题是,如果你试图使用数字,00.0那么你只会得到一个错误.如果您运行例如:

a = 00.0
Run Code Online (Sandbox Code Playgroud)

你收到这个错误:

语法错误,意外的tINTEGER

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

San*_*dri 4

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