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.
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to