在Ruby中计算事件视野

时间:2011-03-09 10:07:31

标签: ruby physics

这是我在这里的第一篇文章。我在2天前就开始使用Ruby,并认为它是一种令人惊叹的语言,但是我一直陷入困境。我的问题是我想要计算一个黑洞的事件视界,给定一个在代码中定义的输入为“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

现在我意识到这个数字不准确,此刻并不重要。我只需要使用该功能。

三江源,

罗斯。

1 个答案:

答案 0 :(得分:1)

您的帖子甚至没有提出问题的格式,但猜测您写的内容,似乎您在询问如何更改代码以便接受m的输入并输出结果。我的回答是基于这个假设。

要获取输入,请使用'gets'方法。因此,您可能希望将“m = 20”行替换为:

m = gets.to_f

'gets'接受输入为字符串,因此您需要将其转换为数字。 to_f将字符串更改为float。如果你想要一个整数,你可以使用to_i。

你有一行'R.to_i(2)',似乎你想输出这个,但你有两个问题。首先,无论创造什么,它只是在那个位置创造一些东西,而不会改变R的值,所以,实际上,它实际上什么都不做。其次,ruby可以接受以不同的基数(如十进制,二进制,十六进制等)编写的源代码中的数字,但它只有一个内部表示,并且您不能以二进制形式输出数字。出于您的目的,您需要将其转换为与二进制表达式对应的字符串。为此,使用'to_s'方法。实际上,'to_i'方法没有参数。删除你的'R.to_i(s)'行,并将'puts R'代替为:

puts R.to_s(2)