from math import modf

class nco (object):
    def __init__ (self, delta):
        self.delta = delta
        self.phase = 0.0
    def __call__ (self):
        self.phase += self.delta
        f,i = modf (self.phase)
        print  modf (self.phase)
        if (self.phase > 1.0):
            self.phase -= 1.0
        return self.phase

n = nco (0.1)
for x in xrange (100):
    print '%.12f' % n()

prints out
[...]
(0.99999999999999978, 0.0)   <<< from modf
1.000000000000   << from n()

I'm baffled as to why 'print modf (self.phase)' prints out the first value,
but the result printed in the 2nd case is different.  Without any precision
spec on the first print, an approximate float value was printed, but even
with %.12f, the second gives exactly 1.000....

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to