[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

Please explain that

Jan Pilz

9/10/2008 1:24:00 PM

Can you please explain this behaviour ?

irb(main):017:0> 071.to_s
=> "57"
irb(main):018:0> 71.to_s
=> "71"

Why is an octal Number converted to decimal when outputted as String ?

7 Answers

Xavier Noria

9/10/2008 1:32:00 PM

0

On Wed, Sep 10, 2008 at 3:24 PM, Jan Pilz <pilz@osp-dd.de> wrote:

> Can you please explain this behaviour ?
>
> irb(main):017:0> 071.to_s

On the one hand a leading "0" in an integer literal like that tells
Ruby you are using base 8. On the other hand #to_s prints in base 10
(by default). You've got the same number, only written in different
ways.

Rimantas Liubertas

9/10/2008 1:32:00 PM

0

> Can you please explain this behaviour ?
>
> irb(main):017:0> 071.to_s
> => "57"
> irb(main):018:0> 71.to_s
> => "71"
>
> Why is an octal Number converted to decimal when outputted as String ?

Let's take a look at ri Fixnum#to_s:

fix.to_s( base=10 ) -> aString
------------------------------------------------------------------------
Returns a string containing the representation of _fix_ radix
_base_ (between 2 and 36).

Here you have it - default base is 10.

Regards,
Rimantas
--
http://rim...

Gregory Brown

9/10/2008 1:33:00 PM

0

On Wed, Sep 10, 2008 at 9:24 AM, Jan Pilz <pilz@osp-dd.de> wrote:
> Can you please explain this behaviour ?
>
> irb(main):017:0> 071.to_s
> => "57"
> irb(main):018:0> 71.to_s
> => "71"
>
> Why is an octal Number converted to decimal when outputted as String ?

Leave off the to_s:

>> 071
=> 57

You can represent your numbers in octal by putting a leading 0, but
they will be accessed as decimal numbers throughout your application.
If you want to display (any) number as octal, just use:

>> 071.to_s(8)
=> "71"
>> 57.to_s(8)
=> "71"


--
Technical Blaag at: http://blog.majesticseacr... | Non-tech
stuff at: http://metametta.bl...

Jano Svitok

9/10/2008 1:34:00 PM

0

On Wed, Sep 10, 2008 at 15:24, Jan Pilz <pilz@osp-dd.de> wrote:
> Can you please explain this behaviour ?
>
> irb(main):017:0> 071.to_s
> => "57"
> irb(main):018:0> 71.to_s
> => "71"
>
> Why is an octal Number converted to decimal when outputted as String ?

It's not an octal number anymore when it's parsed. It's just a number.

Xavier Noria

9/10/2008 1:48:00 PM

0

On Wed, Sep 10, 2008 at 3:33 PM, Gregory Brown
<gregory.t.brown@gmail.com> wrote:

> You can represent your numbers in octal by putting a leading 0, but
> they will be accessed as decimal numbers throughout your application.

In fact the application itself has no sense of bases, applications
deal with numbers. Bases enter the game in literals, printing, etc.

Gregory Brown

9/10/2008 1:57:00 PM

0

On Wed, Sep 10, 2008 at 9:47 AM, Xavier Noria <fxn@hashref.com> wrote:
> On Wed, Sep 10, 2008 at 3:33 PM, Gregory Brown
> <gregory.t.brown@gmail.com> wrote:
>
>> You can represent your numbers in octal by putting a leading 0, but
>> they will be accessed as decimal numbers throughout your application.
>
> In fact the application itself has no sense of bases, applications
> deal with numbers. Bases enter the game in literals, printing, etc.

Right, I was mainly referring to the defaults for interacting with
numbers, but I could have been more clear.

-greg

--
Technical Blaag at: http://blog.majesticseacr... | Non-tech
stuff at: http://metametta.bl...

Gregory Seidman

9/10/2008 2:10:00 PM

0

On Wed, Sep 10, 2008 at 10:24:18PM +0900, Jan Pilz wrote:
> Can you please explain this behaviour ?
>
> irb(main):017:0> 071.to_s
> => "57"
> irb(main):018:0> 71.to_s
> => "71"
>
> Why is an octal Number converted to decimal when outputted as String ?

Check the docs for Fixnum#to_s. It takes a base argument, which defaults to
10. Also, I'll point out that a number isn't octal or decimal or anything
else. It can be represented in whatever base, but it's just a number.

--Greg