如何判断浮点数是否为整数?

时间:2016-02-19 02:02:19

标签: ruby

我正在尝试确定一个人是否可以根据他们的身高参加活动。如果它们的高度以厘米/英寸/无论什么是完美的正方形,那么它们可以去,如果不是,它们就不能。这就是我现在所拥有的:

print "Input height here:"

def height_input
    input = gets.to_i
    input**0.5
end

if height_input.integer?
    print "Congrats, you're in!"
else
    print "Sorry, we can't let you in."
end

if语句不能按我想要的方式工作,因为该方法返回一个浮点值(例如:input = 64 => 8.0)而不是整数。如果我在方法的末尾添加(to_i),或者如果我调用方法使值为整数,它会以整数形式给出根的第一个数字。如果我确实有一个完美的正方形,那也不错,但如果它不是一个完美的正方形,那么我得到的结果就像我做的那样。帮助

2 个答案:

答案 0 :(得分:3)

if (height_input % 1).zero?

if height_input.to_i == height_input

答案 1 :(得分:0)

在ruby中,方法块中的最后一个语句是它的返回值。

def height_input
    input = gets.to_i
    input**0.5
end

这意味着(input ** 0.5)是在这里返回的内容。这将返回一个浮点数。我们还需要将它转换为整数

(input ** 0.5).to_i

现在,返回值为8