Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python将任何数字转换为非科学字符串_Python_String_Numbers_Scientific Notation - Fatal编程技术网

Python将任何数字转换为非科学字符串

Python将任何数字转换为非科学字符串,python,string,numbers,scientific-notation,Python,String,Numbers,Scientific Notation,我希望在python中有一个函数,它可以处理从非常大到非常小的各种数字,甚至是小数点右边有一小部分的大数字,请参见下面的代码。我需要将数字转换为字符串,并删除它可能具有的任何科学符号。我还需要删除小数点右边的尾随零。这是迄今为止我得到的最接近的解决方案,它适用于大多数数字,但并非如您所见的所有数字 是否有任何改进可以支持麻烦的数字 def number2string(a): b = '{0:.15f}'.format(a) b = b.rstrip('0') # remove

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

你看过十进制模块了吗?我试过了,但我看不出如何应用它和解决上面的问题,这些麻烦的数字对你的函数不起作用?上面的最后3个例子:最后一个不起作用的原因是因为你把一个17位的数字截断为15位。15位是一个硬性的、快速的规范吗?你看过十进制模块了吗?我试过了,但我看不出如何应用它,如何解决上面的问题,哪些麻烦的数字不适用于你的函数?上面的最后3个例子:最后一个不起作用的原因是因为你把一个17位的数字截断为15位。15位数字是一个硬性的规范吗?我还不懂代码,但是哇。。。。工作完美。最初的问题存在于python中,这让我感到惊讶,但谢天谢地,我知道python中会有一个解决方案。。。谢谢尤里·科瓦列夫!我还不懂代码,但是哇。。。。工作完美。最初的问题存在于python中,这让我感到惊讶,但谢天谢地,我知道python中会有一个解决方案。。。谢谢尤里·科瓦列夫!
from decimal import Decimal

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