2017-06-29 1 views
-2

Ich habe dies lange gesucht und kann keine befriedigende Antwort finden. Ich möchte wissen, wie ich überprüfen kann, ob die vom Benutzer eingegebene Zahl ein Float ist. Wenn es ein Float ist, sollte es eine ungültige Nummer sein.Überprüfen Sie, ob eine Zahl, die vom Benutzer mit gets.chomp eingegeben wird, ein float in Ruby ist

Ich habe etwas, aber das Ergebnis ist immer wahr/Integer

Hier ist, was ich bisher haben.

puts "What are the first number you want to divide" 
number1 = gets.chomp.to_i 
puts "What is the second number?" 
number2 = gets.chomp.to_i 

def is_float(variable) 
return variable % 1 == 0 
end 

if (number1 == 0) && (number2 == 0) 
puts "Invalid input" 
elsif (is_float(number1) == false) || (is_float(number2) == false) 
puts "Invalid input" 

else 
def divide(number1, number2) 
    return number1/number2 
end 

    division_result = divide(number1, number2) 

def reminder(number1, number2) 
    return number1 % number2 
end 

reminder_results = reminder(number1, number2) 
puts "" 
puts "Your result is #{division_result}" 
puts "Your reminder is #{reminder_results}" 
end 
+0

Wenn Sie 'anything.to_i' verwenden und nicht explizit in einen float konvertieren dann jede' Math' Operation wird eine ganze Zahl zurück. '3.14159.to_i => 3' – whodini9

+0

Haben Sie sich die Definition für [' to_i'] angesehen (https://apidock.com/ruby/String/to_i). 'number1' und' number2' werden 'int's sein –

+2

Wäre es nicht einfacher zu überprüfen, ob die Zahl eine ganze Zahl ist, da es viele Zeichenfolgen gibt, die der Benutzer eingeben kann, die keine Gleitkommazahlen sind, aber auch ungültig sind ? –

Antwort

0
puts "What are the first number you want to divide" 
number1 = gets.chomp.to_i 
=> 100 
puts "What is the second number?" 
number2 = gets.chomp.to_i 
=> 3 

# Regular math 
result_a = number1/number2 
puts "#{number1}/#{number2} = #{result_a}" 
=> 100/3 = 33 # Integer class persists... 

# Use a ruby library instead! Numeric#divmod 
result_b = number1.divmod(number2) 
puts "Result: #{result_b}" 
=> [33, 1] # [quotient, modulus] 
Verwandte Themen