Dino Viehland wrote: > Ok, now I'm implementing __format__ support for IronPython. The format spec mini-language docs say that a presentation type of None is the same as 'g' for floating point / decimal values. Awesome! Thanks for doing this. >But these two formats seem to differ based upon how they handle whole numbers: >>>> 2.0.__format__('') > '2.0' >>>> 2.0.__format__('g') > '2' I think the docs are wrong. For floats, the PEP (http://www.python.org/dev/peps/pep-3101/) says: '' (None) - similar to 'g', except that it prints at least one digit after the decimal point. > The docs also say that 'g' prints it as fixed point unless the number is too large. But the fixed point format differs from what 'f' would print. I guess it didn't say they'd both print it as fixed point w/ a precision of 6 or anything but it seems a little unclear. > >>>> 2.0.__format__('g') > '2' >>>> 2.0.__format__('f') > '2.000000' This is to be compatible with %-formatting: $ ./python Python 2.7a0 (trunk:67325, Nov 21 2008, 20:35:33) [GCC 4.1.2 20070626 (Red Hat 4.1.2-13)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> '%f %g' % (2.0, 2.0) '2.000000 2' > Finally providing any sign character seems to cause +1.0#INF and friends to be returned instead of inf as is documented: > >>>> 10e667.__format__('+') > '+1.0#INF' >>>> 10e667.__format__('') > 'inf' Yes, that does seem odd. Let me look at it a bit and I'll comment on it, hopefully this weekend. I have a pending fix for 2.7/3.1 to make inf handling more consistent across platforms, it might take care of this case, too. > Are these just doc bugs? The inf issue is the only one that seems particularly weird to me. Agreed. Eric.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4