Chris Angelico writes: > On Wed, Jul 13, 2016 at 11:16 PM, Jussi Piitulainen wrote: >>> Or just use divmod: >>> >>>>>> "%d.%02d" % divmod(1<<200, 100) >>> '16069380442589902755419620923411626025222029937827928353013.76' >> >> I'm not quite ready to blame floating point for this difference yet: >> >>>>> "%d.%02d" % divmod(-1,100) >> '-1.99' >>>>> "%.2f" % (-1/100) >> '-0.01' > > Ehhhh, forgot about that :D Negative numbers and modulo *always* trip > me up, because different languages have different rules. I inevitably > have to go check the docos.
Julia's "Euclidean division" (div, rem, divrem) would result in '0.-1' above :) while fld, mod, fldmod (floored or floor or flooring division) would be the same as Python's //, %, divmod. Python 3.4.3 help text for divmod says it returns ((x-x%y)/y, x%y) but that's not quite correct, because type. Probably // is intended. There are easily half a dozen different integer divisions rounding towards or away from zero or up or down or to nearest integer with different ways of breaking ties and matching the sign of dividend or divisor, and a couple of other details, yet I'm not sure if any of them alone would do the job at hand :) Leave it for someone smarter. -- https://mail.python.org/mailman/listinfo/python-list