Convert bignum to numeric and formatting

Discussion in 'Ruby' started by Damaris Fuentes, Jan 5, 2008.

  1. Damaris Fuentes, Jan 5, 2008
    #1
    1. Advertisements

  2. Alle sabato 5 gennaio 2008, Damaris Fuentes ha scritto:
    You don't need to convert a Bignum into a Numeric because it already is:
    Bignum is a subclass of Integer, which is a Subclass of Numeric.

    Stefano
     
    Stefano Crocco, Jan 5, 2008
    #2
    1. Advertisements

  3. Hi,
    I get this:
    "undefined method `format_s' for 10067064106:Bignum"

    So my question is, I'm afraid, how can I install the Numeric extension?
    (I always thought the extensions come with the Ruby installation...)

    Thanks.
     
    Damaris Fuentes, Jan 5, 2008
    #3
  4. Alle sabato 5 gennaio 2008, Damaris Fuentes ha scritto:
    If you have already rubygems installed, you can install extensions through it:

    gem install -r extensions

    (if you're on unix, you'll need to use sudo to do this).

    If you don't have rubygems installed, you can install it (look at the
    rubyforge page for rubygems for how to do it) or install extensions by hand.
    To do this, go to the extensions project page on rubyforge(
    http://rubyforge.org/projects/extensions/ ), follow the download link and
    download the tgz file. At this point, you need to extract the files in the
    tgz file and put them somewhere ruby will look for them (you can get a list
    of such places looking at the $: global variable from irb). Depending on the
    operating system you use, these paths may vary. For instance, on my gentoo
    system, they are:

    /usr/lib/ruby/site_ruby/1.8
    /usr/lib/ruby/site_ruby/1.8/i686-linux
    /usr/lib/ruby/site_ruby
    /usr/lib/ruby/1.8
    /usr/lib/ruby/1.8/i686-linux

    The most appropriate place in this case should be /usr/lib/ruby/site_ruby/1.8.

    Another option is to put the files in any directory and add it to the ruby
    load path either via the environment variable RUBYLIB or using the -L switch
    when calling ruby or modifying the $: variable from inside your ruby program.

    I hope this helps

    Stefano
     
    Stefano Crocco, Jan 5, 2008
    #4
  5. Ok,

    I've executed:
    gem install -r extensions

    And "extensions-0.6.0" has been installed (thanks! :)) (I've checked
    it), but the error of
    "undefined method `format_s' for 10067064106:Bignum"
    still appears.

    (I'm working with Rails)
     
    Damaris Fuentes, Jan 5, 2008
    #5
  6. Alle sabato 5 gennaio 2008, Damaris Fuentes ha scritto:
    Yes, I forgot to add that you need to use

    require 'extensions/numeric'

    in the file where you use format_s

    Stefano
     
    Stefano Crocco, Jan 5, 2008
    #6
  7. Ok, this works with the "require" statement (I've put it in
    environment.rb)

    Well, however, this does not work as it was expected.
    I've made an script as this:
    *****
    require 'extensions/numeric'

    n = 10067064106.format_s:)eu, :sep => '.')
    puts n
    ******
    and the output is 0.067.064.106, without the first "1".

    Why is it deleting the first digit? Is Numeric valid just for numbers of
    11 digits?

    Lots of thanks.
     
    Damaris Fuentes, Jan 5, 2008
    #7
  8. Damaris Fuentes

    Tim Hunter Guest

    Leaving aside the Numeric extension for a minute, this bit of code
    solves the problem.

    x = 12345678901234
    t = x.to_s.reverse.gsub(/(\d){3}(?=\d)/) {|p| p + '.'}.reverse
    puts t

    I've seen other regexp solutions to this problem on this list, but the
    above code is what I came up with on the spur of the moment.
     
    Tim Hunter, Jan 5, 2008
    #8
  9. Yes! This works great!
    I've also seen the regexp solutions on the forum, but they were rather
    complex and that was the reason to use the Numeric extension and avoid
    them, but this one of yours is simple enough.

    Thanks a lot again! :D
     
    Damaris Fuentes, Jan 5, 2008
    #9
    1. Advertisements

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.