Answers:
它正在做整数除法。您可以Float
通过添加.0
以下数字之一:
9.0 / 5 #=> 1.8
9 / 5.0 #=> 1.8
.to_f
回答是更好,如果你将包含整数,例如两个变量a.to_f / b
。如果您实际上是将两个硬编码的整数相除(可能很奇怪),那么使用9.0 / 5
就可以了。
它正在做整数除法。您可以用来to_f
将事物强制为浮点模式:
9.to_f / 5 #=> 1.8
9 / 5.to_f #=> 1.8
如果您的值是变量而不是文字,这也适用。将一个值转换为浮点数足以将整个表达式强制转换为浮点运算。
还有Numeric#fdiv
一种方法可以代替使用:
9.fdiv(5) #=> 1.8
您可以包括ruby mathn
模块。
require 'mathn'
这样,您将能够正常进行划分。
1/2 #=> (1/2)
(1/2) ** 3 #=> (1/8)
1/3*3 #=> 1
Math.sin(1/2) #=> 0.479425538604203
这样,您将获得精确的除法(Rational类),直到您决定应用无法表达为有理数的操作(例如)Math.sin
。
def method; a - b/8; end
从方法中返回计算结果,因为方法调用中的最后一个表达式是返回值。