Why (-9.5).round isn't -9?
From irb console, if you type (-9.5).round, you'll get -10 as a result.Why this occur? You can see same answer from Microsoft Excel.So I searched RDoc. And here's the answer.
1. num.round => integerRounds num to the nearest integer. Numeric implements
this by converting itself to a Float and invoking Float#round.
2. flt.round => integerRounds flt to the nearest integer. Equivalent to:
def roundreturn (self+0.5).floor if self > 0.0
return (self-0.5).ceil if self <0.0
return 0
end
1.5.round #=> 2
(-1.5).round #=> -2
3. num.ceil => integerReturns the smallest Integer greater than or equal to num. Class Numeric achieves this by converting itself to a Float then invoking Float#ceil.
1.ceil #=> 1
1.2.ceil #=> 2
(-1.2).ceil #=> -1
(-1.0).ceil #=> -1
4. flt.ceil => integerReturns the smallest Integer greater than or
equal to flt.
1.2.ceil #=>2
2.0.ceil #=> 2
-1.2).ceil #=> -1
(-2.0).ceil #=> -2
If you want real answer for that, use (-9.5).ceil
(-9.49999999999999999999999999).round #=> -10
(-9.49999999999999999999999999).ceil #=> -9
(9.49).round #=> 9
(9.49999999999999999999).round #=> 10
0 comments:
Post a Comment