From: "ufuk (Ufuk Kayserilioglu) via ruby-core" Date: 2025-11-09T12:04:33+00:00 Subject: [ruby-core:123747] [Ruby Bug#21677] Integer("08") raises an ArgumentError Issue #21677 has been updated by ufuk (Ufuk Kayserilioglu). >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): > ```ruby > 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`. ---------------------------------------- Bug #21677: Integer("08") raises an ArgumentError https://bugs.ruby-lang.org/issues/21677#change-115138 * Author: ben (Bj�rn Engelmann) * Status: Open * ruby -v: 3.3.0 - 3.3.8 * Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- 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 :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. -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/