Левое нулевое число дает странные результаты

Я пытался суммировать числа и получить число с очень левым нулем и начать получать результаты

142 + 3 = 145

но 0142 + 3 = 101

Какой тип данных базового числа для рубина? (я использую repl 2.6.3)

1 ответ

Решение

Это описано в документации Ruby " Numbers":

Вы можете использовать специальный префикс для записи чисел в десятичном, шестнадцатеричном, восьмеричном или двоичном форматах. Для десятичных чисел используйте префикс0d, для шестнадцатеричных чисел используйте префикс 0x, для восьмеричных чисел используйте префикс 0 или 0o, для двоичных чисел используйте префикс 0b. Буквенный компонент числа не чувствителен к регистру.

Поразмышляйте над этим:

0d170 # => 170
0D170 # => 170

0xaa # => 170
0xAa # => 170
0xAA # => 170
0Xaa # => 170
0XAa # => 170
0XaA # => 170

0252  # => 170
0o252 # => 170
0O252 # => 170

0b10101010 # => 170
0B10101010 # => 170

Это очень распространено среди языков программирования.

Если концепция числовых оснований чужда, то они могут помочь:

Другие вопросы по тегам