我想有Python中的函数,可以从非常大到很小,甚至大量处理数字的多元化与十进制的一小部分权利(见下面的代码)。 我需要数转换为字符串,并移除任何科学记数法,可能有。 我还需要去掉小数点右边尾随零。 这是最接近的解决方案,我有这么远,它适用于大多数的数字,但不是全部,你可以看到。
是否有可为支持数字麻烦任何改进?
def number2string(a):
b = '{0:.15f}'.format(a)
b = b.rstrip('0') # remove trailing zeros right of decimal
b = b.rstrip('.') # remove trailing decimal if exists
print a,"->",b
number2string(3)
number2string(3.14)
number2string(3.14E+12)
number2string(3.14e-7)
number2string(1234567.007)
number2string(12345678901234567890)
number2string(.00000000000000123)
结果:
3 -> 3
3.14 -> 3.14
3.14e+12 -> 3140000000000
3.14e-07 -> 0.000000314
1234567.007 -> 1234567.006999999983236
12345678901234567890 -> 12345678901234567168
1.23e-15 -> 0.000000000000001