On 2021-09-05 22:32:51 -0000, Grant Edwards wrote: > On 2021-09-05, Peter J. Holzer <hjp-pyt...@hjp.at> wrote:
[on the representability of fractional numbers as floating point numbers] > And once you understand that, ignore it and write code under the > assumumption that nothing can be exactly represented in floating > point. In almost all cases even the input values aren't exact. > If you like, you can assume that 0 can be exactly represented without > getting into too much trouble as long as it's a literal constant value > and not the result of any run-time FP operations. > > If you want to live dangerously, you can assume that integers with > magnitude less than a million can be exactly represented. That > assumption is true for all the FP representations I've ever used, If you know nothing about the FP representation you use you could do that (however, there is half-precision (16-bit) floating-point which has an even shorter mantissa). But if you are that conservative, you should be equally conservative with your integers, which probably means you can't depend on more than 16 bits (±32767). However, we are using Python here which means we have at least 9 decimal digits of useable mantissa (https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex somewhat unhelpfully states that "[f]loating point numbers are usually implemented using double in C", but refers to https://docs.python.org/3/library/sys.html#sys.float_info which in turn refers directly to the DBL_* constants from C99. So DBL_EPSILON is at most 1E-9. in practice almost certainly less than 1E-15). > but once you start depending on it, you're one stumble from the edge > of the cliff. I think this attitude will prevent you from using floating point numbers when you could, reinventing the wheel, probably badly. hp -- _ | Peter J. Holzer | Story must make more sense than reality. |_|_) | | | | | h...@hjp.at | -- Charles Stross, "Creative writing __/ | http://www.hjp.at/ | challenge!"
signature.asc
Description: PGP signature
-- https://mail.python.org/mailman/listinfo/python-list