<p>在某些情况下,我很难处理需要用于算术的十进制值,而在其他情况下,则需要用作字符串。具体来说,我有一个价格表,例如:</p>
<pre><code>rates=[0.1,0.000001,0.0000001]
</code></pre>
<p>我用这些来指定图像的压缩率。我首先需要将这些值作为数字,因为我需要能够对它们进行排序,以确保它们是按特定顺序排列的。我还希望能够将这些值转换为字符串,以便1)将速率嵌入到文件名中,2)将速率和其他详细信息记录到CSV文件中。第一个问题是,当转换为字符串时,任何小数点后6位以上的浮点都是科学格式的:</p>
<pre><code>>>> str(0.0000001)
'1e-07'
</code></pre>
<p>所以我尝试使用Python的Decimal模块,但它也将一些float转换为科学符号(似乎与我读过的文档相反)。例如:</p>
<pre><code>>>> Decimal('1.0000001')
Decimal('1.0000001')
# So far so good, it doesn't convert to scientific notation with 7 decimal places
>>> Decimal('0.0000001')
Decimal('1E-7')
# Scientific notation, back where I started.
</code></pre>
<p>我还研究了在多篇文章中建议的字符串格式,但我没有任何运气。任何建议和指针都会受到这个Python新手的赞赏。</p>