這是我能夠想到的最好的。它比我以前使用的功能更可讀(在我看來),但它不會更快。
def print_float_8(val, tol=0.0):
if abs(val) <= tol:
return ' 0.'
if val < 0:
return print_float_neg_8(val)
else:
return print_float_pos_8(val)
def print_float_pos_8(val):
if val < 0.01 or val > 100000:
return print_float_sci_pos_8(val)
if val < 0.1:
f = '%8.6g' % val
else:
f = '%8.7g' % val
if len(f) > 8:
f = f.lstrip('0')
return f
def print_float_sci_pos_8(val):
if val < 1.0e-9:
f = ('%10.3e' % val).replace('e-', '-')
elif val < 1:
f = ('%10.4e' % val).replace('e-0', '-')
elif val <= 1.0e9:
f = ('%10.4e' % val).replace('e+0', '+')
else:
f = ('%10.3e' % val).replace('e+', '+')
return f.strip()
def print_float_neg_8(val):
if val > -0.01 or val < -10000:
return print_float_sci_neg_8(val)
if val > -0.1:
f = '%8.5g' % val
else:
f = '%8.6g' % val
if len(f) > 8:
f = f.replace('-0.', '-.')
return f
def print_float_sci_neg_8(val):
if val > -1.0e-9:
f = ('%-8.2e' % val).replace('e-', '-')
elif val > -1:
f = ('%-8.3e' % val).replace('e-0', '-')
elif val >= -1.0e9:
f = ('%-8.3e' % val).replace('e+0', '+')
else:
f = ('%-8.2e' % val).replace('e+', '+')
return f.strip()
你打算如何使用它? – ATOzTOA 2013-02-26 17:29:43
是什麼讓你說鏈接代碼太慢? – Neil 2013-02-26 17:30:15
@ATOzTOA - 我的程序正在爲NASTRAN(結構分析工具)編寫輸入文件。它允許浮點格式的一些古怪的變化。 – gte258v 2013-02-26 17:37:05