>From the virtual desk of Lowell Tackett
--- On Tue, 4/20/10, Steven D'Aprano <st...@pearwood.info> wrote: > From: Steven D'Aprano <st...@pearwood.info> > Subject: Re: [Tutor] the binary math "wall" > To: tutor@python.org > Date: Tuesday, April 20, 2010, 7:39 PM > On Wed, 21 Apr 2010 02:58:06 am > Lowell Tackett wrote: > > I'm running headlong into the dilemma of binary math > representation, > with game-ending consequences, e.g.: > > >>> 0.15 > But if you really need D.MMSS floats, then something like > this should be > a good start.: > > def dms2deg(f): > """Convert a floating point number formatted > as D.MMSS > into degrees. > """ > mmss, d = math.modf(f) > assert d == int(f) > if mmss >= 0.60: > raise ValueError( > 'bad fractional part, expected > < .60 but got %f' % mmss) > mmss *= 100 > m = round(mmss) > if m >= 60: > raise ValueError('bad minutes, > expected < 60 but got %d' % m) > s = round((mmss - m)*100, 8) > if not 0 <= s < 60.0: > raise ValueError('bad seconds, > expected < 60.0 but got %f' % s) > return d + m/60.0 + s/3600.0 > > > >>> dms2deg(18.15) > 18.25 > >>> dms2deg(18.1515) > 18.254166666666666 > > Haven't gone away...I'm having a blast dissecting (parsing[?]-is that the right word?) your script snippet! Got a big pot of coffee fueling the effort. > > Note though that this still fails with some valid input. I > will leave > fixing it as an exercise (or I might work on it later, time > > permitting). Got the hint...I'm gonna pick up this challenge. This effort is taking me in endless tangents (all productive)-I'll be back sometime [soon] with my efforts and results. Thanks for your [own] time and effort. > > > -- > Steven D'Aprano > _______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > http://mail.python.org/mailman/listinfo/tutor > _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor