How to Round off and Truncate in ruby

Discussion in 'Ruby' started by Surjit Nameirakpam, Nov 20, 2007.

  1. Scenario.

    I have an number x=12.45678

    1. I want a function to display x as a round of upto 3 decimal place as
    12.457
    2. Similarly truncate x at 3 decimal place as 12.456

    I am using gsl library function and searched for TRUNC and ROUND
    function but couldn't find anything concrete
    --
    Posted via http://www.ruby-forum.com/.
     
    Surjit Nameirakpam, Nov 20, 2007
    #1
    1. Advertising

  2. Surjit Nameirakpam

    Phrogz Guest

    On Nov 20, 1:07 pm, Surjit Nameirakpam <>
    wrote:
    > Scenario.
    >
    > I have an number x=12.45678
    >
    > 1. I want a function to display x as a round of upto 3 decimal place as
    > 12.457
    > 2. Similarly truncate x at 3 decimal place as 12.456

    irb(main):001:0> x=12.45678
    => 12.45678
    irb(main):002:0> s = "%.3f" % x
    => "12.457"
    irb(main):003:0> y = (x*1000).round / 1000
    => 12
    irb(main):004:0> y = (x*1000).round / 1000.0
    => 12.457
    irb(main):007:0> class Numeric
    irb(main):008:1> def round_to( decimals=0 )
    irb(main):010:2> factor = 10.0**decimals
    irb(main):011:2> (self*factor).round / factor
    irb(main):012:2> end
    irb(main):013:1> end
    => nil
    irb(main):014:0> y = x.round_to(3)
    => 12.457
    irb(main):015:0> y = x.round_to(1)
    => 12.5
    irb(main):016:0> y = x.round_to(-1)
    => 10.0

    Note that 'rounding' the number is subject to floating point precision
    errors. Subsequent printing of a number rounded to 3 decimal places
    like the above may display as something like 12.4569999999999999999
     
    Phrogz, Nov 20, 2007
    #2
    1. Advertising

  3. Surjit Nameirakpam, Nov 20, 2007
    #3
  4. Surjit Nameirakpam

    Phrogz Guest

    On Nov 20, 1:31 pm, Surjit Nameirakpam <>
    wrote:
    > I am getting the truncate but the round off mentioned above doesn't work


    As shown above, it certainly does work. (You are looking at the actual
    output of typing code directly into irb and having Ruby evaluate it.)

    I assume your code is slightly different. Perhaps if pared it down to
    a test case that showed exactly your problem, we could help further.
     
    Phrogz, Nov 20, 2007
    #4
  5. Surjit Nameirakpam wrote:
    > I am getting the truncate but the round off mentioned above doesn't work


    Sorry.. Its the opposite round of works but truncate doesn't work
    --
    Posted via http://www.ruby-forum.com/.
     
    Surjit Nameirakpam, Nov 20, 2007
    #5
  6. Surjit Nameirakpam

    Bil Kleb Guest

    Bil Kleb, Nov 20, 2007
    #6
  7. Surjit Nameirakpam wrote:
    > Surjit Nameirakpam wrote:
    >> I am getting the truncate but the round off mentioned above doesn't work

    >
    > Sorry.. Its the opposite round of works but truncate doesn't work


    Ah, I missed that you also wanted truncate.

    irb(main):001:0> class Numeric
    irb(main):002:1> # same potential floating point problem as round_to
    irb(main):003:1* def truncate_to( decimals=0 )
    irb(main):004:2> factor = 10.0**decimals
    irb(main):005:2> (self*factor).floor / factor
    irb(main):006:2> end
    irb(main):007:1> end
    => nil
    irb(main):008:0>
    irb(main):009:0* x = 12.45678
    => 12.45678
    irb(main):010:0> x.truncate_to( 3 )
    => 12.456
    irb(main):011:0> x.to_s.sub /(\.\d{3}).+/, '\1'
    => "12.456"
    --
    Posted via http://www.ruby-forum.com/.
     
    Gavin Kistner, Nov 20, 2007
    #7
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    9
    Views:
    14,794
    Mike Wahler
    Jan 3, 2005
  2. Replies:
    0
    Views:
    1,111
  3. Girish Sahani

    How to truncate/round-off decimal numbers?

    Girish Sahani, Jun 20, 2006, in forum: Python
    Replies:
    15
    Views:
    40,398
    rasonage
    Dec 17, 2011
  4. OliverMarchand

    Float.round - should it be round-to-even

    OliverMarchand, Apr 12, 2006, in forum: Ruby
    Replies:
    2
    Views:
    231
    OliverMarchand
    Apr 12, 2006
  5. cerr

    reading file round and round

    cerr, Mar 19, 2010, in forum: Perl Misc
    Replies:
    6
    Views:
    191
    Peter J. Holzer
    Mar 20, 2010
Loading...

Share This Page