https://bugs.ruby-lang.org/
https://bugs.ruby-lang.org/favicon.ico?1711330511
2019-07-19T04:21:00Z
Ruby Issue Tracking System
Ruby master - Feature #16011: Digit grouping
https://bugs.ruby-lang.org/issues/16011?journal_id=79721
2019-07-19T04:21:00Z
znz (Kazuhiro NISHIYAMA)
<ul><li><strong>Tracker</strong> changed from <i>Bug</i> to <i>Feature</i></li><li><strong>Backport</strong> deleted (<del><i>2.5: UNKNOWN, 2.6: UNKNOWN</i></del>)</li></ul>
Ruby master - Feature #16011: Digit grouping
https://bugs.ruby-lang.org/issues/16011?journal_id=79722
2019-07-19T05:17:32Z
duerst (Martin Dürst)
duerst@it.aoyama.ac.jp
<ul></ul><p>Just for the record:</p>
<ul>
<li>What to use as thousands separator is locale-dependent. It can be a comma (US), a dot (Germany), an apostrophe (Switzerland), a space (Sweden; usually a narrow-width, non-breaking space), and so on.</li>
<li>Some locales don't use thousands separators, and the separators don't have to come in regular intervals (e.g. Hindi).</li>
</ul>
Ruby master - Feature #16011: Digit grouping
https://bugs.ruby-lang.org/issues/16011?journal_id=79724
2019-07-19T05:24:44Z
shyouhei (Shyouhei Urabe)
shyouhei@ruby-lang.org
<ul><li><strong>Related to</strong> <i><a class="issue tracker-2 status-5 priority-4 priority-default closed" href="/issues/12447">Feature #12447</a>: Integer#digits for extracting digits of place-value notation in any base</i> added</li></ul>
Ruby master - Feature #16011: Digit grouping
https://bugs.ruby-lang.org/issues/16011?journal_id=79725
2019-07-19T05:57:16Z
shyouhei (Shyouhei Urabe)
shyouhei@ruby-lang.org
<ul></ul><pre><code class="ruby syntaxhl" data-language="ruby"><span class="k">class</span> <span class="nc">Integer</span>
<span class="k">def</span> <span class="nf">delimited</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
<span class="n">div</span><span class="p">,</span> <span class="n">mod</span> <span class="o">=</span> <span class="n">n</span><span class="p">.</span><span class="nf">divmod</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
<span class="k">return</span> <span class="p">(</span> <span class="p">\</span>
<span class="n">digits</span><span class="p">(</span><span class="mi">1000</span><span class="p">).</span><span class="nf">lazy</span> <span class="o">+</span> <span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nf">cycle</span> <span class="p">\</span>
<span class="p">)</span> <span class="p">.</span> <span class="nf">first</span><span class="p">(</span><span class="n">div</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="p">\</span>
<span class="p">.</span> <span class="nf">reverse</span> <span class="p">\</span>
<span class="p">.</span> <span class="nf">map</span> <span class="p">{</span><span class="o">|</span><span class="n">i</span><span class="o">|</span> <span class="s1">'%03d'</span> <span class="o">%</span> <span class="n">i</span> <span class="p">}</span> <span class="p">\</span>
<span class="p">.</span> <span class="nf">join</span><span class="p">(</span><span class="s1">','</span><span class="p">)</span> <span class="p">\</span>
<span class="p">.</span> <span class="nf">sub</span><span class="p">(</span><span class="sr">/\A\d{</span><span class="si">#{</span><span class="mi">3</span><span class="o">-</span><span class="n">mod</span><span class="si">}</span><span class="sr">},?/</span><span class="p">,</span> <span class="s1">''</span><span class="p">)</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="mi">1234</span><span class="p">.</span><span class="nf">delimited</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span> <span class="c1">#=> "0,001,234"</span>
</code></pre>
Ruby master - Feature #16011: Digit grouping
https://bugs.ruby-lang.org/issues/16011?journal_id=79726
2019-07-19T06:05:31Z
znz (Kazuhiro NISHIYAMA)
<ul></ul><p>Some <code>printf</code> can use <code>%'d</code>.</p>
<pre><code>$ /usr/bin/printf "%'d\n" 1234
1,234
</code></pre>
Ruby master - Feature #16011: Digit grouping
https://bugs.ruby-lang.org/issues/16011?journal_id=79728
2019-07-19T07:07:14Z
shyouhei (Shyouhei Urabe)
shyouhei@ruby-lang.org
<ul></ul><p>znz (Kazuhiro NISHIYAMA) wrote:</p>
<blockquote>
<p>Some <code>printf</code> can use <code>%'d</code>.</p>
</blockquote>
<p>Yes but that's not what the OP wants.</p>
<pre><code>% printf "%'07d\\n" 1234
001,234
</code></pre>
<p>The output is different.</p>
Ruby master - Feature #16011: Digit grouping
https://bugs.ruby-lang.org/issues/16011?journal_id=79740
2019-07-19T20:17:03Z
shevegen (Robert A. Heiler)
shevegen@gmail.com
<ul></ul><p>The python example seems quite concise to me:</p>
<pre><code>format(1234, '08,') # => '0,001,234'
format(1234, '8,') # => ' 1,234'
</code></pre>
<p>I can not say how useful this may be though.</p>
<p>The method-names seem a bit strange to me - format() seems very generic<br>
and delimited() is .... hmmm. I am not sure with what this is "de-limited".</p>
Ruby master - Feature #16011: Digit grouping
https://bugs.ruby-lang.org/issues/16011?journal_id=79804
2019-07-22T18:01:07Z
shan (Shannon Skipper)
<ul></ul><pre><code class="ruby syntaxhl" data-language="ruby"><span class="k">class</span> <span class="nc">Integer</span>
<span class="k">def</span> <span class="nf">delimited</span><span class="p">(</span><span class="ss">by: </span><span class="s1">','</span><span class="p">,</span> <span class="ss">digits: </span><span class="mi">0</span><span class="p">,</span> <span class="ss">padding: </span><span class="s1">'0'</span><span class="p">,</span> <span class="ss">every: </span><span class="mi">3</span><span class="p">)</span>
<span class="n">extra_padding_size</span> <span class="o">=</span> <span class="n">digits</span><span class="p">.</span><span class="nf">to_int</span> <span class="o">-</span> <span class="no">Math</span><span class="p">.</span><span class="nf">log10</span><span class="p">(</span><span class="nb">self</span><span class="p">).</span><span class="nf">floor</span><span class="p">.</span><span class="nf">succ</span>
<span class="n">extra_padding</span> <span class="o">=</span> <span class="k">if</span> <span class="n">extra_padding_size</span><span class="p">.</span><span class="nf">positive?</span>
<span class="no">Array</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="n">extra_padding_size</span><span class="p">,</span> <span class="n">padding</span><span class="p">.</span><span class="nf">to_str</span><span class="p">.</span><span class="nf">chr</span><span class="p">)</span>
<span class="k">end</span>
<span class="p">(</span><span class="nb">self</span><span class="p">.</span><span class="nf">digits</span> <span class="o">+</span> <span class="n">extra_padding</span><span class="p">.</span><span class="nf">to_a</span><span class="p">).</span><span class="nf">each_slice</span><span class="p">(</span><span class="n">every</span><span class="p">).</span><span class="nf">map</span> <span class="k">do</span> <span class="o">|</span><span class="n">triplet</span><span class="o">|</span>
<span class="n">triplet</span><span class="p">.</span><span class="nf">reverse</span><span class="p">.</span><span class="nf">join</span>
<span class="k">end</span><span class="p">.</span><span class="nf">reverse</span><span class="p">.</span><span class="nf">join</span><span class="p">(</span><span class="n">by</span><span class="p">.</span><span class="nf">to_str</span><span class="p">)</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="no">N</span> <span class="o">=</span> <span class="mi">4_200_000</span>
<span class="no">N</span><span class="p">.</span><span class="nf">delimited</span>
<span class="c1">#=> "4,200,000"</span>
<span class="no">N</span><span class="p">.</span><span class="nf">delimited</span><span class="p">(</span><span class="ss">by: </span><span class="s1">'_'</span><span class="p">)</span>
<span class="c1">#=> "4_200_000"</span>
<span class="no">N</span><span class="p">.</span><span class="nf">delimited</span><span class="p">(</span><span class="ss">every: </span><span class="mi">2</span><span class="p">,</span> <span class="ss">by: </span><span class="s1">'_'</span><span class="p">)</span>
<span class="c1">#=> "4_20_00_00"</span>
<span class="no">N</span><span class="p">.</span><span class="nf">delimited</span><span class="p">(</span><span class="ss">digits: </span><span class="mi">12</span><span class="p">)</span>
<span class="c1">#=> "000,004,200,000"</span>
<span class="no">N</span><span class="p">.</span><span class="nf">delimited</span><span class="p">(</span><span class="ss">digits: </span><span class="mi">12</span><span class="p">,</span> <span class="ss">padding: </span><span class="s1">'X'</span><span class="p">)</span>
<span class="c1">#=> "XXX,XX4,200,000"</span>
</code></pre>
Ruby master - Feature #16011: Digit grouping
https://bugs.ruby-lang.org/issues/16011?journal_id=79851
2019-07-23T13:31:25Z
Hanmac (Hans Mackowiak)
hanmac@gmx.de
<ul></ul><p>because it is locale-dependent as duerst said, i think it should only be part of an intl gem where you can control the locale</p>
Ruby master - Feature #16011: Digit grouping
https://bugs.ruby-lang.org/issues/16011?journal_id=80261
2019-07-30T07:56:14Z
ko1 (Koichi Sasada)
<ul><li><strong>Status</strong> changed from <i>Open</i> to <i>Assigned</i></li><li><strong>Assignee</strong> set to <i>matz (Yukihiro Matsumoto)</i></li></ul>
Ruby master - Feature #16011: Digit grouping
https://bugs.ruby-lang.org/issues/16011?journal_id=80281
2019-07-30T13:26:56Z
matz (Yukihiro Matsumoto)
matz@ruby.or.jp
<ul><li><strong>Status</strong> changed from <i>Assigned</i> to <i>Rejected</i></li></ul><p>I agree with <a class="user active user-mention" href="https://bugs.ruby-lang.org/users/50">@duerst (Martin Dürst)</a> and <a class="user active user-mention" href="https://bugs.ruby-lang.org/users/3055">@Hanmac (Hans Mackowiak)</a><br>
It's handy but it cannot be in the standard library.</p>
<p>Matz.</p>
Ruby master - Feature #16011: Digit grouping
https://bugs.ruby-lang.org/issues/16011?journal_id=95386
2021-12-16T03:05:45Z
mame (Yusuke Endoh)
mame@ruby-lang.org
<ul><li><strong>Related to</strong> <i><a class="issue tracker-2 status-1 priority-4 priority-default" href="/issues/18410">Feature #18410</a>: Proposal to make inspect include underscores on numerics</i> added</li></ul>