Project

General

Profile

Actions

Bug #1566

closed

sprintf with %e or %E Format Specifer Incorrectly Capitalises Inf and NaN

Added by runpaint (Run Paint Run Run) over 15 years ago. Updated over 11 years ago.

Status:
Rejected
Target version:
ruby -v:
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
[ruby-core:23697]

Description

=begin
sprintf/String#% use the %e and %E format specifier to determine the case of results which are NaN or Inf. For example:

$ ruby1.8 -ve 'p sprintf("%e", 0.0/0)'
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
"nan"

$ ruby1.8 -ve 'p sprintf("%E", 0.0/0)'
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
"NAN"

I suspect this is wrong for the following reasons:

  • 1.9 doesn't capitalise these values, i.e. it always returns Inf or NaN.
  • The rdoc description for the %E field is "Equivalent to `e', but uses an uppercase E to indicate the exponent." Neither Inf or NaN are exponents.
  • The description for the %e field doesn't make any mention of it's output case.
  • JRuby, and I believe Rubinius, behave as 1.9 does.
  • NaN and Inf have specific mathematical meanings; it doesn't make sense to subject them to English capitalisation rules.
    =end

Files

fix-nan-and-inf-in-sprintf.diff (507 Bytes) fix-nan-and-inf-in-sprintf.diff Fix NaN and Inf capitalization in sprintf m (m .), 09/08/2009 07:53 AM
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0