有理数不像Ruby中的代数中的分数

时间:2012-08-21 01:51:11

标签: ruby math rational-number

有人可以向我解释一下吗?

x = Rational(3/4) * 8
 => (0/1) # I Expected it to return 6
x.to_i
 => 0 

感谢。

2 个答案:

答案 0 :(得分:5)

您正在创建Rational个号码,其中3/4为唯一参数。 3/40,因此,您的代码等同于

Rational(0) * 8

显然是0

将此与

进行比较
Rational(3, 4) * 8
# => (6/1)

你明确地传递分子和分母。

答案 1 :(得分:1)

如果您希望在分数中使用斜杠,则可以使用字符串作为参数:

x = Rational('3/4') * 8

x = ('3/4'.to_r) * 8