I'm getting numbers like
2.36363636363636
4.567563
1.234566465448465
10.5857447736
How would i get ruby to round these numbers up (or down) to the nearest 0.05?
Thanks
I'm getting numbers like
2.36363636363636
4.567563
1.234566465448465
10.5857447736
How would i get ruby to round these numbers up (or down) to the nearest 0.05?
Thanks
[2.36363636363636, 4.567563, 1.23456646544846, 10.5857447736].map do |x|
(x*20).round / 20.0
end
#=> [2.35, 4.55, 1.25, 10.6]
Try 'nearest 5 cents' in Google. Heaps of results. Some of them relevant.
In general the algorithm for “rounding to the nearest x” is:
round(x / precision)) * precision
Sometimes is better to multiply by 1 / precision
because it is an integer (and thus it works a bit faster):
round(x * (1 / precision)) / (1 / precision)
In your case that would be:
round(x * (1 / 0.05)) / (1 / 0.05)
which would evaluate to:
round(x * 20) / 20;
I don’t know any Python, though, so the syntax might not be correct but I’m sure you can figure it out.