在Python中接受带小数的用户输入时我正在使用:
#will input meal subtotal
def input_meal():
mealPrice = input('Enter the meal subtotal: $')
mealPrice = float (mealPrice)
return mealPrice
Run Code Online (Sandbox Code Playgroud)
它确切地返回输入的内容 - 比如$ 43.45
但是当使用该值来计算和显示我正在使用的税时:
#will calculate 6% tax
def calc_tax(mealPrice):
tax = mealPrice*.06
return tax
Run Code Online (Sandbox Code Playgroud)
使用返回$ 2.607的显示
mealPrice = input_meal()
tax = calc_tax(mealPrice)
display_data(mealPrice, tax)
Run Code Online (Sandbox Code Playgroud)
我怎样才能将其设置为2.61美元?
原谅我,我意识到这是基本的东西,但他们并没有把它简称为Intro ...
谢谢!
Bar*_*tek 27
有几种方法可以执行此操作,具体取决于您希望如何保存该值.
您可以使用基本的字符串格式,例如
'Your Meal Price is %.2f' % mealPrice
Run Code Online (Sandbox Code Playgroud)
您可以修改所需的2
精度.
但是,由于您正在处理资金,因此您应该查看十进制模块,该模块具有一个名为cool的方法quantize
,该方法正好适用于货币应用程序.您可以像这样使用它:
from decimal import Decimal, ROUND_DOWN
mealPrice = Decimal(str(mealPrice)).quantize(Decimal('.01'), rounding=ROUND_DOWN)
Run Code Online (Sandbox Code Playgroud)
请注意,该rounding
属性也是纯可选的.
我对你提到的第二个数字感到惊讶(和您所要求的四舍五入确认) -起初我还以为我的心算本能已开始令我失望(我正在变老,毕竟,这样可能会相同作为我曾经犀利的记忆! - )...然后我确认它还没有,正如我想象的那样,使用Python 3.1,以及复制和粘贴......:
>>> def input_meal():
... mealPrice = input('Enter the meal subtotal: $')
... mealPrice = float (mealPrice)
... return mealPrice
...
>>> def calc_tax(mealPrice):
... tax = mealPrice*.06
... return tax
...
>>> m = input_meal()
Enter the meal subtotal: $34.45
>>> print(calc_tax(m))
2.067
>>>
Run Code Online (Sandbox Code Playgroud)
......正如预期的那样 - 然而,你说它"返回2.607美元的显示"......这可能是一个错字,只是交换两位数,除了你然后问"我如何设置为$ 2.61而不是? " 所以它真的看起来你真正的意思2.607
(可能以各种方式舍入到2.61)并且绝对不是算术上正确的结果,2.067
(最多可能会舍入到2.07 ......绝对不是 2.61,如你所要求的那样).
我想你首先在转录中出现了拼写错误,然后通过错误的伪造2.607
而不是实际的原始结果进行心理计算所需的舍入- 是发生了什么?它确实让我困惑了一段时间! - )
无论如何,要将浮点数舍入为两位小数,最简单的方法是内置函数round,其第二个参数为2
:
>>> round(2.067, 2)
2.07
>>> round(2.607, 2)
2.61
Run Code Online (Sandbox Code Playgroud)
对于两种可能性之间完全等距的数字,它是舍入到偶数:
>>> round(2.605, 2)
2.6
>>> round(2.615, 2)
2.62
Run Code Online (Sandbox Code Playgroud)
或者,正如文档所说的那样(用单参数形式表示round
,其舍入为最接近的整数):
如果两个倍数相等,则向均匀选择进行舍入(例如,圆形(0.5)和圆形(-0.5)都是0,圆形(1.5)是2).
然而,对于金钱的计算,我在其他答案中已经给出的建议是第二,坚持十进制模块提供的,而不是float
数字.
您没有显示 的代码display_data
,但您需要执行以下操作:
print "$%0.02f" %amount
Run Code Online (Sandbox Code Playgroud)
这是变量的格式说明符amount
。
由于这是初学者主题,我不会讨论浮点舍入错误,但最好知道它的存在。
归档时间: |
|
查看次数: |
95145 次 |
最近记录: |