преобразование базовых типов данных ruby - PullRequest
2 голосов
/ 07 апреля 2011

У меня возникла небольшая проблема при преобразовании типа данных в ruby.

Вот некоторые из выводов, которые я получил в консоли

0123 and enter gave me output 83
12345600.to_s   #=> "12345600"

но

012345600.to_s gave me #=> "2739072" but i expect "012345600"

Похоже, что когда в начале числа есть 0, результат не соответствует ожидаемому.

Кто-нибудь может объяснить, почему это происходит? или предоставьте мне решение, чтобы я мог получить ожидаемый результат.

Спасибо

Ответы [ 4 ]

5 голосов
/ 07 апреля 2011

Наличие 0 в начале числа заставляет интерпретатор / компилятор интерпретировать следующие цифры как последовательность восьмеричных чисел (основание 8), а не последовательность десятичных чисел (основание 10).Поэтому введенное вами число является восьмеричным, а не десятичным.

Вы можете проверить это на научном калькуляторе, переведя его в восьмеричный режим, а затем переключившись на десятичное число.

2 голосов
/ 07 апреля 2011

Начинание числа с нуля в Ruby говорит парсеру, что вы собираетесь записать число в восьмеричной записи.Вот еще один SO с некоторой информацией:

Как мне преобразовать восьмеричное число в десятичное в Ruby?

0 голосов
/ 08 апреля 2011

«Числа», как и номер телефона 02555555555 вовсе не являются числами.Это просто строки, которые содержат только цифры.

0 голосов
/ 07 апреля 2011

Вы не можете вернуть ноль, но вы можете сделать это.

0123.to_s(8)
#=> "123"

На самом деле меня интересует, откуда у вас такие числа, как 0123?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...