Issue #13153 has been updated by jeremyevans0 (Jeremy Evans).

Backport deleted (2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN)
ruby -v deleted (ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux])
Tracker changed from Bug to Feature

`sprintf` has been documented that the prefix is only added on non-zero since commit:67151cd7af01f97524f0a14cf5abd9567f856155 in 2008, so this isn't a bug, but a feature request.  Adding the prefix even on zero seems more reasonable to me, but I'm not sure the backwards compatibility loss is worth it.  It's also questionable how this would interact with the space, plus, and minus flags.  Here's a commit that implements it and passes the sprintf tests/specs: https://github.com/jeremyevans/ruby/commit/2adaaa87f2cf40c21f2560b34fafdce0ef45d321

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

* Author: RickHull (Rick Hull)
* Status: Open
* Priority: Normal
----------------------------------------
```ruby
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>