diff options
author | Anthon van der Neut <anthon@mnt.org> | 2017-08-07 09:43:06 +0200 |
---|---|---|
committer | Anthon van der Neut <anthon@mnt.org> | 2017-08-07 09:43:06 +0200 |
commit | 56035ae630d159ce4d4f32264d3f992a24d6014f (patch) | |
tree | a8a01711504430b1f196e6ac9aafd07fe346a2c4 /representer.py | |
parent | be4502b57ac2203e3ad075b18a5a94f87dfcf8dc (diff) | |
download | ruamel.yaml-56035ae630d159ce4d4f32264d3f992a24d6014f.tar.gz |
python 2.7 changes float round-trippign
Diffstat (limited to 'representer.py')
-rw-r--r-- | representer.py | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/representer.py b/representer.py index a4cf481..ee0f49e 100644 --- a/representer.py +++ b/representer.py @@ -766,21 +766,21 @@ class RoundTripRepresenter(SafeRepresenter): return self.represent_scalar(u'tag:yaml.org,2002:float', value) if data._exp is None and data._prec > 0 and data._prec == data._width - 1: # no exponent, but trailing dot - value = '{}{:d}.'.format(data._m_sign if data._m_sign else '', abs(int(data))) + value = u'{}{:d}.'.format(data._m_sign if data._m_sign else u'', abs(int(data))) elif data._exp is None: # no exponent, "normal" dot prec = data._prec if prec < 1: prec = 1 # print('dw2', data._width, prec) - ms = data._m_sign if data._m_sign else '' + ms = data._m_sign if data._m_sign else u'' # -1 for the dot - value = '{}{:0{}.{}f}'.format(ms, abs(data), data._width-len(ms), data._width-prec-1) + value = u'{}{:0{}.{}f}'.format(ms, abs(data), data._width-len(ms), data._width-prec-1) while len(value) < data._width: - value += '0' + value += u'0' else: # exponent - m, es = '{:{}e}'.format(data, data._width).split('e') + m, es = u'{:{}e}'.format(data, data._width).split('e') w = data._width if data._prec > 0 else (data._width + 1) if data < 0: w += 1 @@ -788,39 +788,39 @@ class RoundTripRepresenter(SafeRepresenter): e = int(es) m1, m2 = m.split('.') # always second? while len(m1) + len(m2) < data._width - (1 if data._prec >= 0 else 0): - m2 += '0' + m2 += u'0' if data._m_sign and data > 0: m1 = '+' + m1 - esgn = '+' if data._e_sign else '' + esgn = u'+' if data._e_sign else u'' if data._prec < 0: # mantissa without dot - if m2 != '0': + if m2 != u'0': e -= len(m2) else: - m2 = '' + m2 = u'' while (len(m1) + len(m2) - (1 if data._m_sign else 0)) < data._width: - m2 += '0' + m2 += u'0' e -= 1 - value = m1 + m2 + data._exp + '{:{}0{}d}'.format(e, esgn, data._e_width) + value = m1 + m2 + data._exp + u'{:{}0{}d}'.format(e, esgn, data._e_width) elif data._prec == 0: # mantissa with trailing dot e -= len(m2) - value = m1 + m2 + '.' + data._exp + '{:{}0{}d}'.format(e, esgn, data._e_width) + value = m1 + m2 + u'.' + data._exp + u'{:{}0{}d}'.format(e, esgn, data._e_width) else: if data._m_lead0 > 0: - m2 = '0' * (data._m_lead0 - 1) + m1 + m2 - m1 = '0' + m2 = u'0' * (data._m_lead0 - 1) + m1 + m2 + m1 = u'0' m2 = m2[:-data._m_lead0] # these should be zeros e += data._m_lead0 while len(m1) < data._prec: m1 += m2[0] m2 = m2[1:] e -= 1 - value = m1 + '.' + m2 + data._exp + '{:{}0{}d}'.format(e, esgn, data._e_width) + value = m1 + u'.' + m2 + data._exp + u'{:{}0{}d}'.format(e, esgn, data._e_width) if value is None: value = to_unicode(repr(data)).lower() return self.represent_scalar(u'tag:yaml.org,2002:float', value) #if data._width is not None: - # s = '{:0{}d}'.format(data, data._width) + # s = u'{:0{}d}'.format(data, data._width) #else: # s = format(data, 'f') #return self.insert_underscore('', s, data._underscore) |