Issue #13153 has been updated by Ryan Davis.


FWIW, this is the exact same behavior in C since we're just calling through to `snprintf` for these format specifiers.

----------------------------------------
Bug #13153: Inconsistent sprintf formatting for 0 value
https://bugs.ruby-lang.org/issues/13153#change-62663

* Author: Rick Hull
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
0.upto(5).map { |i| "%#0.2x" % i }

# expect: ["0x00", "0x01", "0x02", "0x03", "0x04", "0x05"]

# actual: ["00", "0x01", "0x02", "0x03", "0x04", "0x05"]

Notice that the 0x is omitted when i == 0.  The 0x prefix is specified by '#' (and 'x') in the format string.  If this is expected behavior, then it sure is surprising and undocumented AFAIK.  *goes back to double check*

Behavior on 2.4.0 confirmed on 2.3.3 as well.



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>