zappdapper
zappdapper

Reputation: 59

rounding off to the nearest number ruby

def percent_more
puts "What is the biggest number?"
biggest_number = gets.chomp
puts "What is the smallest number?"
smallest_number = gets.chomp
difference = biggest_number.to_i - smallest_number.to_i
total_percent_more = difference / smallest_number.to_f
puts "Your biggest number is #{total_percent_more}% bigger then your smallest number. Don't forget to round off to the nearest whole percent!"  

end

Now that code will tell you what percent more biggest_number is than smallest_number. But the problem is it prints out a long list of decimals, which are a pain to sort through. So if I wanted the code to only show say the first 3 numbers what would I do??

Upvotes: 0

Views: 351

Answers (3)

Gurmukh Singh
Gurmukh Singh

Reputation: 2017

Here is an example how to round to 2 decimal places

amount = 342
puts amount.round(2)

If you wanted to round to the nearest 3 decimal places then something like:

puts amount.round(3)

Upvotes: 0

ShaneQful
ShaneQful

Reputation: 2236

What you want to use is total_percent_more.round like so:

puts "What is the biggest number?"
biggest_number = gets.chomp
puts "What is the smallest number?"                                                                        
smallest_number = gets.chomp                                                                               
difference = biggest_number.to_i - smallest_number.to_i                                                    
total_percent_more = difference / smallest_number.to_f                                                     
puts "Your biggest number is #{total_percent_more.round}% bigger then your smallest number. Don't forget to round off to the nearest whole percent!"

See the docs for more info :

http://www.ruby-doc.org/core-2.1.2/Float.html#method-i-round

in ruby versions earlier than 1.9 you'll need to use sprintf like so:

puts "Your biggest number is #{sprintf('%.2f', total_percent_more)}% bigger then your smallest number. Don't forget to round off to the nearest whole percent!"

You can change the amount of decimal places by changing the number.

See docs for more details:

http://www.ruby-doc.org/core-1.8.7/Kernel.html#method-i-sprintf

Upvotes: 3

7stud
7stud

Reputation: 48589

result = 10/6.0
puts result
printf("%.3f\n", result)

--output:--
1.66666666666667
1.667

Upvotes: 1

Related Questions