Skip to main content
 首页 » 编程设计

Python 任意数字转非科学字符串

2025年05月04日23luoye11

我希望在 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 

请您参考如下方法:

from decimal import Decimal 
 
def number2string(a): 
    b = format(Decimal(str(a)).normalize(), 'f') 
    print a,"->",b