Расчет горизонтов событий в Ruby - PullRequest
0 голосов
/ 09 марта 2011

это мой первый пост здесь. Я начал использовать Ruby всего 2 дня назад и думаю, что это удивительный язык, однако я застрял. Моя проблема в том, что я хочу вычислить горизонт событий для черной дыры с учетом входных данных, определенных в коде как «m». Затем они будут введены в расчет, а размер выведен на экран. Мне нужно, чтобы это было в двоичном формате, и вот где у меня проблема.

Вот мой код.

#Event Horizon Calculation Program
G = 6.67*10**-11
m = 20
C = 200000

R = G*m/(C**2)

puts "Here is the result in Binary."

R.to_i(2)

puts R

Теперь я понимаю, что число не точное, это не имеет значения в данный момент. Мне просто нужна функция для работы.

Thankyou,

Росс.

1 Ответ

1 голос
/ 09 марта 2011

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

Чтобы получить ввод, используйте метод «get».Таким образом, вы можете заменить строку 'm = 20' на:

m = gets.to_f

'gets' принимает входные данные в виде строки, поэтому вам необходимо преобразовать их в числовое значение.to_f превращает строку в число с плавающей точкой.Вместо этого вы можете использовать to_i, если вам нужно целое число.

У вас есть строка R.to_i (2), и кажется, что вы хотите вывести это, но у вас есть две проблемы здесь.Прежде всего, что бы это ни создавало, оно только создает что-то в этой позиции и не меняет значение R, так что фактически оно фактически ничего не делает.Во-вторых, ruby ​​может принимать цифры в исходном коде, написанном на разных основах, таких как десятичное, двоичное, шестнадцатеричное и т. Д., Но оно имеет только одно внутреннее представление, и вы не можете вывести цифру в двоичном виде.Для вашей цели вам нужно преобразовать ее в строку, соответствующую бинарному выражению.Для этого используйте метод to_s.Фактически, метод to_i не принимает аргумента.Удалите строку «R.to_i (s)» и замените строку «ставит R» на:

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