擅长:python、mysql、java
<pre><code>ValueError: Unknown format code 'f' for object of type 'str'
</code></pre>
<p>问题是你没有号码。你已经有一个字符串了。你知道吗</p>
<p>演示:</p>
<pre><code>>>> price = 1
>>> type(price)
<class 'int'>
>>> "{0:.2f}".format(price)
'1.00'
>>>
>>> price = 1.5
>>> type(price)
<class 'float'>
>>> "{0:.2f}".format(price)
'1.50'
>>>
>>> price = '1.5'
>>> type(price)
<class 'str'>
>>> "{0:.2f}".format(price)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Unknown format code 'f' for object of type 'str'
>>>
</code></pre>
<p>仔细检查您的代码后:</p>
<blockquote>
<pre><code>price = str(price)
"{0:.2f}".format(price)
</code></pre>
</blockquote>
<p>您将数字转换为字符串,但未指定任何格式:<code>str(price)</code>。然后您尝试格式化一个字符串,但没有对返回值执行任何操作。你知道吗</p>
<p>要修复它:</p>
<pre><code>price = "{0:.2f}".format(price)
</code></pre>
<hr/>
<hr/>
<p>顺便说一句,使用浮点数据来计算价格是非常糟糕的做法。如果您想要精确的货币处理,您需要使用十进制或定点类型。原因是碱基-2和碱基-10的分数并不完全一致。这一点在网上有很好的记录和解释。你知道吗</p>