Um den numerischen Typ in Python in den Zeichenfolgentyp zu ändern, können Sie ihn mit str () umwandeln. Wenn Sie jedoch den Float des Exponentialausdrucks mit str () umwandeln, ist das Ergebnis etwas uncool.
Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 0.1
>>> str(a)
'0.1'
>>> b = 0.00000000000000000000000000000000000000001
>>> str(b)
'1e-41'
Zu diesem Zeitpunkt str (b) '0.00000000000000000000000000000000000000001' Ich möchte, dass du wirst.
Ich konnte es mit den unten beschriebenen Funktionen gut machen.
[Referenz] https://stackoverflow.com/questions/38847690/convert-float-to-string-in-positional-format-without-scientific-notation-and-fa/38983595#38983595
def float_to_str(f):
float_string = repr(f)
if 'e' in float_string: # detect scientific notation
digits, exp = float_string.split('e')
digits = digits.replace('.', '').replace('-', '')
exp = int(exp)
zero_padding = '0' * (abs(int(exp)) - 1) # minus 1 for decimal point in the sci notation
sign = '-' if f < 0 else ''
if exp > 0:
float_string = '{}{}{}.0'.format(sign, digits, zero_padding)
else:
float_string = '{}0.{}{}'.format(sign, zero_padding, digits)
return float_string
Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 0.1
>>> str(a)
'0.1'
>>> b = 0.00000000000000000000000000000000000000001
>>> str(b)
'1e-41'
>>> def float_to_str(f):
... float_string = repr(f)
... if 'e' in float_string: # detect scientific notation
... digits, exp = float_string.split('e')
... digits = digits.replace('.', '').replace('-', '')
... exp = int(exp)
... zero_padding = '0' * (abs(int(exp)) - 1) # minus 1 for decimal point in the sci notation
... sign = '-' if f < 0 else ''
... if exp > 0:
... float_string = '{}{}{}.0'.format(sign, digits, zero_padding)
... else:
... float_string = '{}0.{}{}'.format(sign, zero_padding, digits)
... return float_string
...
>>> float_to_str(b)
'0.00000000000000000000000000000000000000001'
Recommended Posts