Convert bignum to numeric and formatting

  • Thread starter Damaris Fuentes
  • Start date
S

Stefano Crocco

Alle sabato 5 gennaio 2008, Damaris Fuentes ha scritto:
Hi you all,

I'm trying to format a Bignum such as 1012345556 into 1.012.345.556
(separating the thousands).
I've seen the extension of Numeric [1] can do that but, how can I
convert my Bignum to a Numeric?

Thanks.

[1] http://extensions.rubyforge.org/rdoc/classes/Numeric.html

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
 
D

Damaris Fuentes

Hi,
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.

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.
 
S

Stefano Crocco

Alle sabato 5 gennaio 2008, Damaris Fuentes ha scritto:
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.

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
 
D

Damaris Fuentes

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)
 
S

Stefano Crocco

Alle sabato 5 gennaio 2008, Damaris Fuentes ha scritto:
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)

Stefano Crocco wrote:

Yes, I forgot to add that you need to use

require 'extensions/numeric'

in the file where you use format_s

Stefano
 
D

Damaris Fuentes

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.
 
T

Tim Hunter

Damaris said:
Hi you all,

I'm trying to format a Bignum such as 1012345556 into 1.012.345.556
(separating the thousands).

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.
 
D

Damaris Fuentes

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
 

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. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,774
Messages
2,569,599
Members
45,173
Latest member
GeraldReund
Top