Hi all,
I have a number, for example, 1.123456789. What is the Ruby way to
change it into whatever number of floating points such as 1.12,
1.123,1.1234568 or 1.12345679.
Thanks,
Li
···
--
Posted via http://www.ruby-forum.com/.
Hi all,
I have a number, for example, 1.123456789. What is the Ruby way to
change it into whatever number of floating points such as 1.12,
1.123,1.1234568 or 1.12345679.
Thanks,
Li
--
Posted via http://www.ruby-forum.com/.
You can use the number.round method, but this doesn't take a number of decimal places.
To round 1.234 to 1.23 use this code:
x = 1.234
x = x * 100 # -> 123.4
x = x.round -> 123
x = x / 100.0 => 1.23
At least, that's the best method I can find from the Ruby docs... Dan Li Chen wrote:
Hi all,
I have a number, for example, 1.123456789. What is the Ruby way to
change it into whatever number of floating points such as 1.12,
1.123,1.1234568 or 1.12345679.Thanks,
Li
It might be better to leave the precision alone until you print it, in
which case, you can print it with #sprintf or String#% or similar:
irb(main):001:0> '%.2f' % 1.23456789
=> "1.23"
irb(main):002:0> '%.5f' % 1.23456789
=> "1.23457"
On 12/4/06, Li Chen <chen_li3@yahoo.com> wrote:
Hi all,
I have a number, for example, 1.123456789. What is the Ruby way to
change it into whatever number of floating points such as 1.12,
1.123,1.1234568 or 1.12345679.Thanks,
Li
--
Posted via http://www.ruby-forum.com/\.
You could use facets:
% sudo gem install facets
% irb
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'facet/float/round_at'
=> true
irb(main):003:0> require 'facet/float/round_to'
=> true
irb(main):004:0> x = 1.123456789
=> 1.123456789
irb(main):005:0> x.round_at(3)
=> 1.123
irb(main):006:0> x.round_at(7)
=> 1.1234568
irb(main):007:0> x.round_at(100)
=> 1.123456789
irb(main):008:0> x.round_to(0.001)
=> 1.123
irb(main):009:0> x.round_to(0.000001)
=> 1.123457
enjoy,
-jeremy
It might be better to leave the precision alone
until you print it, in
which case, you can print it with #sprintf or
String#% or similar:irb(main):001:0> '%.2f' % 1.23456789
=> "1.23"
irb(main):002:0> '%.5f' % 1.23456789
=> "1.23457"
I think I prefer the suggestion.
Li
____________________________________________________________________________________
Have a burning question?
Go to www.Answers.yahoo.com and get answers from real people who know.
Daniel Finnie wrote:
You can use the number.round method, but this doesn't take a number of
decimal places.To round 1.234 to 1.23 use this code:
x = 1.234
x = x * 100 # -> 123.4
x = x.round -> 123
x = x / 100.0 => 1.23At least, that's the best method I can find from the Ruby docs...
This is not a good idea. Because the number being manipulated is binary but
the display is decimal, the multiplication and division steps will fail on
some numbers -- many, in fact -- and those numbers will print more decimal
places than was intended.
It's better to retain the full binary resolution of a number internally, and
only show certain decimal places while printing a number -- don't try to
truncate the number itself.
--
Paul Lutus
http://www.arachnoid.com