Please explain that

J

Jan Pilz

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 ?
 
X

Xavier Noria

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

Rimantas Liubertas

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
 
G

Gregory Brown

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:
=> 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:
=> "71"
 
J

Jano Svitok

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

Xavier Noria

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

Gregory Brown

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
 
G

Gregory Seidman

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
 

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

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,044
Latest member
RonaldNen

Latest Threads

Top