Python数学 - 浮动财务输出错误

时间:2016-12-31 01:46:59

标签: python-3.x

在零售审核计算器的一小部分代码中,我尝试允许输入零售价值并将其乘以最多2个输入数量预期(预期)结果为$ X * Y = $ž。

我试图修改几个代码所说的代码,并且似乎仍然坚持这个数学是如何(不是)正常工作的。

我在代码中尝试了许多不同的配置,我们取得的成就如下:

#Retail value of item, whole number (i.e. $49.99 entered as 4999)
rtlVAL = input("Retail Value: ")

#Quantity of Items - can be multiplied for full stack items, default if no entry is '1'
qt1 = float(input("Quantity 1: ")) #ex. 4
qt2 = float(input("Quantity 2: ") or "1") #ex " "

#Convert the Retail Value to finacial format (i.e 4999 to $49.99)
rtl = float("{:.2}".format (rtlVAL))

# Screen Output
qtyVAL = int(qt1)*int(qt2)
print("$" + str(qtyVAL*rtl))

输入的值为: 零售价值:4999 数量1:4 数量2 :(空白)

预期的性能是4999 * 4 *(因为没有条目默认值为1)而预期的结果是 $ 199.96

此代码的结果是 $ 196.0 ,因此不仅是错误的结论,而且错过了两位小数

我不完全确定为什么数学在预期的背景下会出错。

我在这里缺少什么?

在第9行,我尝试了以下内容:

rtl = float("{:.2f}".format (rtlVAL))

rtl = int("{:.2f}".format (rtlVAL))

回归是

  

ValueError:未知的格式代码' f'对于类型' str'

的对象

如果我将第13行更改为:

print("$" + float(qtyVAL*rtl))

我得到了

  

TypeError:必须是str,而不是float

使用前面的任何一个改动与后者一起将返回 ValueError:

Python 3.4和3.6

我确实搜索了一些关于Python,数学,浮点和格式化的其他SO问题,但问题是寻找和呈现更多的进展和纠缠比这样,所以我无法收集答案创建一个上下文应用程序,或者它主要应用于Python 2.7,其中一些代码如raw input()只是input()并在Python 3.x中被int(input())更改为步出{{1价值(据我所知,为此目的。

我没有看到这是重复的,但如果我错过了一些我道歉的事情 - 这不是故意的。

1 个答案:

答案 0 :(得分:1)

无需乱用数字格式:

rtl = float(rtlVAL)/100

只需将零售价值除以100即可获得美元价值

编辑:

顺便提一下,它提出196的原因是因为你的数字格式是rtlVAL的前两位 - 在你的情况下是49 - 然后乘以它。