"Noam Raphael" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] | My use case is data manipulation in the interactive shell -
When doing things other than add and subtract, one soon gets floats that are no longer such 'even' decimals, even if the input is. | Many times I have float data. | >>> height['Alice'] | 1.67 For parroting back low precision input, I sort of see your point, but you already knew your input values, | Is much easier to understand than | | >>> height['Alice'] | 1.6699999999999999 so I do not see how there is a problem with understanding them. Of course, in this case, you can get what you want with >>> print height['Alice'] 1.67 It seems your real problem is that repr() rather than str() is applied within collections. (I am not sure exactly why but suspect there is a reason.) | I think that the reason for the long representation is that it uses a | simple algorithm that makes "eval(repr(f)) == f" always true. A necessary condition for this is that every float have its own representation, so that f != g ==> repr(f) != repr(g). I think this is a nice property. You seem to agree. | However, | why not use another, a bit more complex, algorithm, which will still | preserve "eval(repr(f)) == f", but which will shorten the result when it can? Do you have such an algorithm? I have the impression that Tim Peters (or whoever) tried and gave up. Note that 1.6700000000000001 converts to a different binary than 1.67 or 1.6699999999999999, and so cannot be rounded to 1.67 (and preserve the condition), no matter how much more 'understandable' the latter is. In other words, some numbers wiill round the way you expect but other will not. This might end up being at least as confusing at the current situation. | You see, it's not even that the current algorithm is exact No, that would require even longer decimals. I think it intends to gives the closest 17 digit number (plus exponent). 17 being enough to give unique representations. (I do not know if this includes subnormalized floats.) Terry Jan Reedy _______________________________________________ Python-3000 mailing list [email protected] http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com
