Project

General

Profile

Actions

Feature #12447

closed

Integer#digits for extracting digits of place-value notation in any base

Feature #12447: Integer#digits for extracting digits of place-value notation in any base

Added by mrkn (Kenta Murata) over 9 years ago. Updated over 9 years ago.

Status:
Closed
Target version:
-
[ruby-core:75799]

Description

I sometimes want to extract digits of place-value notation of integer numbers.

For example:

12345.digits      #=> [5, 4, 3, 2, 1]
12345.digits(100) #=> [45, 23, 1]

One typical use case is calculating checksum digit.
I found some code extracting digits by the way like int.to_s.chars.map(&:to_i).

Introducing Integer#digits can reduce needless string allocation in such cases.

The patch was pushed into the repository in github.
https://github.com/mrkn/ruby/commit/5dce32d


Related issues 3 (1 open2 closed)

Related to Ruby - Feature #4787: Integer#each_modulo(n)Closedmatz (Yukihiro Matsumoto)Actions
Related to Ruby - Feature #12116: `Fixnum#divmod`, `Bignum#divmod` with multiple argumentsOpenActions
Related to Ruby - Feature #16011: Digit groupingRejectedmatz (Yukihiro Matsumoto)Actions

Updated by mrkn (Kenta Murata) over 9 years ago Actions #1

Updated by mrkn (Kenta Murata) over 9 years ago Actions #2

  • Related to Feature #12116: `Fixnum#divmod`, `Bignum#divmod` with multiple arguments added

Updated by mrkn (Kenta Murata) over 9 years ago Actions #3 [ruby-core:75800]

  • Description updated (diff)

Updated by mrkn (Kenta Murata) over 9 years ago Actions #4 [ruby-core:75976]

  • Description updated (diff)

Updated by matz (Yukihiro Matsumoto) over 9 years ago Actions #5 [ruby-core:75979]

Approved.

Matz.

Updated by akr (Akira Tanaka) over 9 years ago Actions #6 [ruby-core:75980]

I wanted such method to encode integer in some binary format.
(I cannot remember concrete example.)
For example, pack("w") can be implementd using Integer#digits.

Updated by mrkn (Kenta Murata) over 9 years ago Actions #7 [ruby-core:75986]

Summary of decision in today's Developer meeting:

  • The results endian is little endian.
  • Raise Math::DomainError for negative receiver.
  • Return [0] for 0.

Updated by mrkn (Kenta Murata) over 9 years ago Actions #8

  • Status changed from Open to Closed

Applied in changeset r55395.


numeric.c: Add Integer#digits [Feature #12447] [ruby-core:75799]

Updated by shyouhei (Shyouhei Urabe) about 6 years ago Actions #9

Actions

Also available in: PDF Atom