How to write string (float) to file?
Rainer Deyke
root at rainerdeyke.com
Wed Aug 29 12:56:06 EDT 2001
"Grant Edwards" <grante at visi.com> wrote in message
news:slrn9oq5eu.leu.grante at grante.comtrol.com...
> In article <bo8j7.54122$c8.24122471 at news1.denver1.co.home.com>, Rainer
Deyke wrote:
> > "Grant Edwards" <grante at visi.com> wrote in message
> > news:slrn9ops86.ks3.grante at grante.comtrol.com...
> >> After reading a handful of follow-ups, I'm still curious what
> >> you mean when you say that's unreliable.
> >
> >>>> def foo(a, b): return '%.2f' % (float(a)/b)
> > ...
>
> Thanks, but that wasn't helpful. Am I to assume that you're
> not happy with one of the results? Which one? Why do you
> think it's wrong?
> >>>> foo(1, 200)
> > '0.01'
Standard rounding: 0.01
Accountant rounding: 0.00
In this case the result resembles what you get with standard rounding, but
this is not always the case. See below.
> >>>> foo(3, 200)
> > '0.01'
Standard rounding: 0.02
Accountant rounding: 0.02
This looks like a "just plain wrong" result to me. If you don't care about
the least significant digit, this might be tolerable for you.
> >>>> foo(5, 200)
> > '0.03'
Standard rounding: 0.03
Accountant rounding: 0.02
Again, the result resembles what you get with standard rounding. This case
doesn't really demonstrate anything new.
> >>>> foo(10000000000000000000000000000000000000000l, 2)
> > '5000000000000000200000000000000000000000.00'
^
Not just incorrect, but the incorrect digit is right in the middle of the
number, not in the least significant place.
--
Rainer Deyke (root at rainerdeyke.com)
Shareware computer games - http://rainerdeyke.com
"In ihren Reihen zu stehen heisst unter Feinden zu kaempfen" - Abigor
More information about the Python-list
mailing list