I'm running headlong into the dilemma of binary math representation, with 
game-ending consequences, e.g.:

>>> 0.15
0.14999999999999999

Obviously, any attempts to manipulate this value, under the misguided 
assumption that it is truly "0.15" are ill-advised, with inevitable bad results.

the particular problem I'm attempting to corral is thus:

>>> math.modf(18.15)
(0.14999999999999858, 18.0)

with some intermediate scrunching, the above snippet morphs to:

>>> (math.modf(math.modf(18.15)[0]*100)[0])/.6
1.6666666666664298

The last line should be zero, and needs to be for me to continue this algorithm.

Any of Python's help-aids that I apply to sort things out, such as formatting 
(%), or modules like "decimal" do nothing more than "powder up" the display for 
visual consumption (turning it into a string).  The underlying float value 
remains "corrupted", and any attempt to continue with the math adapts and 
re-incorporates the corruption.

What I'm shooting for, by the way, is an algorithm that converts a deg/min/sec 
formatted number to decimal degrees.  It [mostly] worked, until I stumbled upon 
the peculiar cases of 15 minutes and/or 45 minutes, which exposed the flaw.

What to do?  I dunno.  I'm throwing up my hands, and appealing to the "Council".

(As an [unconnected] aside, I have submitted this query as best I know how, 
using plain text and the "tu...@..." address.  There is something that either 
I, or my yahoo.com mailer *or both* doesn't quite "get" about these mailings.  
But, I simply do my best, following advice I've been offered via this forum.  
Hope this --mostly-- works.)

>From the virtual desk of Lowell Tackett  



      
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to