擅长:python、mysql、java
<p>首先,您没有将输入转换为数字。这意味着任何以<code>'6'</code>开头的“数”都大于任何以<code>'2'</code>开头的“数”,即使是像<code>'6.38'</code>和<code>'198.86'</code>这样的值。你知道吗</p>
<pre><code>thisKey, thisSale = data_mapped
thisSale = float(thisSale)
</code></pre>
<p>接下来,将<code>oldSale</code>设置为<code>0</code>,但从不引用它。我想你是想在那里做<code>maxSale = 0</code>,重置一个新商店的值。你知道吗</p>
<p>最后,您不需要在<code>if</code>块中使用<code>oldKey = thisKey;</code>,因为您会在之后立即这样做。你知道吗</p>
<p>请注意,当您将值转换为该货币的最小面额并使用整数时,货币计算效果最佳,因为浮点计算并不总是完全准确的,而且可能会出现舍入错误。看起来您的数据不能保证有尾随的零,因此您必须检查字符串中是否有小数点,如果存在小数点,则在小数点上拆分,等等。你知道吗</p>
<pre><code>thisKey, thisSale = data_mapped
if '.' not in thisSale:
thisSale = int(thisSale)*100
else:
dollars, cents = thisSale.split('.')
if len(cents) < 2:
cents += '0'
thisSale = int(dollars)*100 + int(cents)
</code></pre>
<p>对表示美分数的整数执行财务计算,然后根据显示需要将值格式化为美元和美分:</p>
<pre><code>>>> '%.2f' % (29886/100.)
'298.86'
>>> '{:.02f}'.format(29886/100.)
'298.86'
</code></pre>