On Sat, Sep 12, 2020 at 05:37:23PM -0700, Christopher Barker wrote: > On Sat, Sep 12, 2020 at 5:05 PM Steven D'Aprano <st...@pearwood.info> wrote:
> > IEEE-754 requires that float literals overflow to infinity. > > sure, which means that, e.g. 1e100 * 1e300 would overflow to Inf. > > But that doesn't say anything about interpreting a literal. I don't if C > libs necessarily parse: Sorry, I didn't explain correctly. What I attempted, but failed, to say is that the standard requires that if the float literal cannot be represented as a numeric value because it would overflow, then it should be interpreted as an infinity. So `1e300` can be represented as a double precision float, so that's what you get, but `1e1000` cannot be, it overflows, so you get infinity instead. This doesn't mean that the standard requires the parser to read the mantissa and exponent separately and actually perform a multiplication and power. I expect that the standard will require *correctly rounded* results. So for example, this literal rounds down to the largest possible finite float: py> 1.7976931348623158e+308 1.7976931348623157e+308 but this literal rounds up to infinity: py> 1.7976931348623159e+308 inf because the closest representable binary number to 1.79...159e+308 would overflow the available bits. > So that's what I'm wondering -- is there a standard that says the a > too-large literal should overflow, and therefgor create and inf, rather > than being an error. Yep, that's what I'm saying :-) Or at least tried to say. -- Steve _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/WSNITPXWL2J2EZK35VU4EBRONDDXQDJY/ Code of Conduct: http://python.org/psf/codeofconduct/