Project

General

Profile

Actions

Bug #21677

closed

Integer("08") raises an ArgumentError

Bug #21677: Integer("08") raises an ArgumentError

Added by ben (Björn Engelmann) about 20 hours ago. Updated about 20 hours ago.

Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
3.3.0 - 3.3.8
[ruby-core:123746]

Description

ruby version: tried it with 3.3.0 and 3.3.8

When running the following ruby script:

p Integer("04")
p Integer("05")
p Integer("06")
p Integer("07")
p Integer("08")

I get the following output:

4
5
6
7
internal:kernel:307:in Integer': invalid value for Integer(): "08" (ArgumentError) from bug.rb:7:in '

it seems that "08" and "09" are for some reason not parsable, while all other number "00", "01", "02", "03", "04", "05", "06", and "07" are.

I would have expected the Integer-parser to have consistent behaviour, independent of the numbers that are parsed...

By the way: it the same for "008", "0008" and so on.

Updated by ufuk (Ufuk Kayserilioglu) about 20 hours ago Actions #1 [ruby-core:123747]

From the docs https://docs.ruby-lang.org/en/3.4/Kernel.html#method-i-Integer:

With base zero, string object may contain leading characters to specify the actual base (radix indicator):

Integer('0100')  # => 64  # Leading '0' specifies base 8.

So, your strings are interpreted as octal numbers (base-8) due to the leading zero, in which the value 08 is invalid.

If you want to do parsing in decimal (base-10), then you need to explicitly pass the base argument as 10.

Updated by nagachika (Tomoyuki Chikanaga) about 20 hours ago Actions #2 [ruby-core:123748]

  • Status changed from Open to Rejected

Thanks for the report, and for checking this.
As Ufuk already stated, this is the intended behavior, and it is also clearly documented.

Updated by retro (Josef Šimánek) about 20 hours ago · Edited Actions #3 [ruby-core:123749]

Just adding to Ufuk's great explanation and to make it super clear, to fix your case, you need to call Integer('08', 10) and Integer('09', 10).

Actions

Also available in: PDF Atom