Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.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 2.6.6中的小数和科学记数法问题_Python_String_Decimal_Scientific Notation - Fatal编程技术网

Python 2.6.6中的小数和科学记数法问题

Python 2.6.6中的小数和科学记数法问题,python,string,decimal,scientific-notation,Python,String,Decimal,Scientific Notation,我在处理十进制值时遇到了困难,在某些情况下,我需要将其用于算术,在其他情况下,我需要将其用作字符串。具体而言,我有一份费率清单,例如: rates=[0.1,0.000001,0.0000001] 我用这些来指定图像的压缩率。我首先需要将这些值作为数字,因为我需要能够对它们进行排序,以确保它们按特定顺序排列。我还希望能够将这些值转换为字符串,以便1)将速率嵌入文件名,2)将速率和其他详细信息记录在CSV文件中。第一个问题是,任何小数点超过6位的浮点在转换为字符串时都是科学格式的: >&g

我在处理十进制值时遇到了困难,在某些情况下,我需要将其用于算术,在其他情况下,我需要将其用作字符串。具体而言,我有一份费率清单,例如:

rates=[0.1,0.000001,0.0000001]
我用这些来指定图像的压缩率。我首先需要将这些值作为数字,因为我需要能够对它们进行排序,以确保它们按特定顺序排列。我还希望能够将这些值转换为字符串,以便1)将速率嵌入文件名,2)将速率和其他详细信息记录在CSV文件中。第一个问题是,任何小数点超过6位的浮点在转换为字符串时都是科学格式的:

>>> str(0.0000001)
'1e-07'
因此,我尝试使用Python的十进制模块,但它也将一些浮点值转换为科学符号(似乎与我阅读的文档相反)。例:


我还研究了多篇文章中建议的字符串格式,但我没有任何运气。这位Python新手非常欣赏任何建议和指针。

您必须指定字符串格式,然后:

["%.8f" % (x) for x in rates]
这将产生
['0.10000000','0.00000100','0.00000010']
。也适用于
十进制

'{0:f}'.format(Decimal('0.0000001'))
以上内容适用于您

请参见,尤其是浮点转换:

“e”浮点指数格式(小写)。(三)

“E”浮点指数格式(大写)。(三)

“f”浮点十进制格式。(三)

“F”浮点十进制格式。(三)

“g”浮点格式。如果指数小于-4或不小于精度,则使用小写指数格式,否则使用十进制格式。(四)

“G”浮点格式。如果指数小于-4或不小于精度,则使用大写指数格式,否则使用十进制格式。(四)

例如,使用
f
格式

>>> ["%10.7f" %i for i in rates]
[' 0.1000000', ' 0.0000010', ' 0.0000001']
>>> 
您还可以使用更新的(从2.6开始)方法:


您知道如何在Python2.6.6中做同样的事情吗?
>>> ["%10.7f" %i for i in rates]
[' 0.1000000', ' 0.0000010', ' 0.0000001']
>>> 
>>> ['{0:10.7f}'.format(i) for i in rates]
[' 0.1000000', ' 0.0000010', ' 0.0000001']
>>>