[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Convert bignum to numeric and formatting

Damaris Fuentes

1/5/2008 5:07:00 PM

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/Nu...
--
Posted via http://www.ruby-....

8 Answers

Stefano Crocco

1/5/2008 5:15:00 PM

0

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/Nu...

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

Damaris Fuentes

1/5/2008 5:34:00 PM

0

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.
--
Posted via http://www.ruby-....

Stefano Crocco

1/5/2008 5:50:00 PM

0

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

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/e... ), 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

Damaris Fuentes

1/5/2008 6:10:00 PM

0

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

--
Posted via http://www.ruby-....

Stefano Crocco

1/5/2008 6:14:00 PM

0

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

Damaris Fuentes

1/5/2008 6:29:00 PM

0

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.

Stefano Crocco wrote:
> Alle sabato 5 gennaio 2008, Damaris Fuentes ha scritto:
>> (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

--
Posted via http://www.ruby-....

Tim Hunter

1/5/2008 7:12:00 PM

0

Damaris Fuentes wrote:
> 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.

--
RMagick: http://rmagick.ruby...
RMagick 2: http://rmagick.ruby...rmagick2.html

Damaris Fuentes

1/5/2008 7:20:00 PM

0

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

--
Posted via http://www.ruby-....