Левое нулевое число дает странные результаты
Я пытался суммировать числа и получить число с очень левым нулем и начать получать результаты
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
Это очень распространено среди языков программирования.
Если концепция числовых оснований чужда, то они могут помочь: