0
我有一系列需要以特定格式打印出來的浮點數,與科學記數法非常相似。 給定數字-345.678,科學記數法會給我-3.45678E2,但是我需要輸出-.345678D03。具體來說,我不能在小數點左邊有任何數字。有沒有辦法在Python 3中做到這一點?Python:某種科學記數法
我有一系列需要以特定格式打印出來的浮點數,與科學記數法非常相似。 給定數字-345.678,科學記數法會給我-3.45678E2,但是我需要輸出-.345678D03。具體來說,我不能在小數點左邊有任何數字。有沒有辦法在Python 3中做到這一點?Python:某種科學記數法
我不知道你的格式的全部細節,但下面應該工作或輕易修改的工作:
from decimal import Decimal
def sci_str(dec):
return ('{:.' + str(len(dec.normalize().as_tuple().digits) - 1) + 'E}').format(dec)
def mod_sci_str(x):
s = sci_str(10*Decimal(str(x)))
s = s.replace('E+','D0')
s = s.replace('E-','D0-')
s = s.replace('.','')
if s.startswith('-'):
return '-.' + s[1:]
else:
return '.' + s
功能sci_str
是一個聰明的工具,由於@MikeM在這問題
例如:
>>> mod_sci_str(-345.678)
'-.345678D03'
>>> mod_sci_str(345.678)
'.345678D03'
>>> mod_sci_str(0.0034)
'.34D0-2'