Raymond Hettinger wrote: > On Mar 21, 2010, at 3:35 PM, Guido van Rossum wrote: >>> It seems to me that Decimals and floats should be considered at >>> the same level (i.e. both implement Real). >> Agreed, but doesn't help. (Except against the idea that Decimal goes >> on the "integer" side of Fraction, which is just wrong.) > > Woohoo! Glad you agree. > I was concerned that idea > was gathering a following. Heck no, it was just a random late night thought from me, and even I thought it was a somewhat dubious idea. I don't mind at all that it since has been knocked soundly (and deservedly) on the head :) > Reasoning for emitting a warning by default: > > 1) Real actual use cases for mixed decimal / float operations are rare. > 2) But accidental mixed decimal / float is an easy mistake to make. > 3) Implicit coercion hides the error. > 4) A warning flag gives you a chance to catch your error. > 5) A warning is educational (it makes sure that you understand > what your program is doing) > 6). A warning is easily silenced either through a) the warnings module, > b) setting a context flag in decimal, or c) by making the coercion explicit > using Decimal.from_float(). I'll add another one to that list: (7) For backwards compatible changes, it is easy to go from exception -> warning -> no warning (if we later decide to take that second step). Going from exception -> no warning -> warning (if we were to change our minds the other way) is a lot less user-friendly. (I was going to try to play devil's advocate and argue in favour of float results and/or no warning, but I got nuthin' - Raymond's points made too much sense to me). A warning is nice in that you can mix decimals and floats at the interpreter prompt with a single warning per session, but the warning can still act as a pointer into the weird and wonderful world of binary vs decimal floating point. Cheers, Nick. -- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia ---------------------------------------------------------------
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