Fix rounding error

Reported by paparomeo
This commit is contained in:
Georgios Verigakis
2016-01-27 11:32:36 +02:00
parent f1bfb28df9
commit 36ba012ffb

View File

@@ -65,15 +65,15 @@ class IncrementalBar(Bar):
def update(self): def update(self):
nphases = len(self.phases) nphases = len(self.phases)
expanded_length = int(nphases * self.width * self.progress) filled_len = self.width * self.progress
filled_length = int(self.width * self.progress) nfull = int(filled_len) # Number of full chars
empty_length = self.width - filled_length phase = int((filled_len - nfull) * nphases) # Phase of last char
phase = expanded_length - (filled_length * nphases) nempty = self.width - nfull # Number of empty chars
message = self.message % self message = self.message % self
bar = self.phases[-1] * filled_length bar = self.phases[-1] * nfull
current = self.phases[phase] if phase > 0 else '' current = self.phases[phase] if phase > 0 else ''
empty = self.empty_fill * max(0, empty_length - len(current)) empty = self.empty_fill * max(0, nempty - len(current))
suffix = self.suffix % self suffix = self.suffix % self
line = ''.join([message, self.bar_prefix, bar, current, empty, line = ''.join([message, self.bar_prefix, bar, current, empty,
self.bar_suffix, suffix]) self.bar_suffix, suffix])