在零售审核计算器的一小部分代码中,我尝试允许输入零售价值并将其乘以最多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价值(据我所知,为此目的。
我没有看到这是重复的,但如果我错过了一些我道歉的事情 - 这不是故意的。
答案 0 :(得分:1)
无需乱用数字格式:
rtl = float(rtlVAL)/100
只需将零售价值除以100即可获得美元价值
编辑:
顺便提一下,它提出196的原因是因为你的数字格式是rtlVAL
的前两位 - 在你的情况下是49 - 然后乘以它。