如何让 Python 处理 int 输入,将它们转换为两位小数?

How can I get Python to work on int inputs, converting them to two decimal points?

此程序旨在执行以下操作:

我希望将数字精确计算到小数点后两位。问题在于,如果用户在输入时不包含小数,则程序无法识别小数位。

这就是我添加 "broker_purchase_commission / 100.00" 行的原因,我认为它会强制计算到小数点后两位。但是,这似乎不起作用。任何帮助表示赞赏。

shares_purchased = input("How many shares were bought? ")
share_initial_price = input("What was the price per share? $")
broker__purchase_commission = input("What percentage commission is due to the stockbroker? ")
broker__purchase_commission = broker__purchase_commission / 100.00
purchase_price = ((shares_purchased * share_initial_price) + ((shares_purchased * share_initial_price) * broker__purchase_commission))

print ""
print "You purchased stock worth $%d" %purchase_price
print "Two weeks later you decide to sell the stock."
print ""

shares_sold = input("How many shares are sold? ")
share_present_price = input("What is the price per share? $")
broker__sale_commission = input("What percentage commission is due to the stockbroker? ")
broker__sale_commission = broker__sale_commission / 100.00
sale_price = ((shares_sold * share_present_price) + ((shares_sold * share_present_price) * broker__purchase_commission))

print "You sold stock worth $%d" %sale_price

您是否尝试使用 float() 构造函数?喜欢

broker__sale_commission = float(broker__sale_commission)

阅读更多here

对于钱的东西,你需要精度,你必须使用 decimal 模块并将所有数字转换为 Decimal,如:

from decimal import *
Decimal(number)

所以你应该像

一样将所有输入转换为十进制
shares_purchased = Decimal(input("How many shares were bought? ")).

并使用 Decimal(100.00)100.00 转换为您的除法中的小数。 对于打印,请确保不要将结果转换为整数。

print "You purchased stock worth ", purchase_price

而不是

print "You purchased stock worth $%d" %purchase_price

有关模块的文档,请参阅 https://docs.python.org/2/library/decimal.html

就用string formatting,提到要打印的小数位数:

>>> x = 1.0/10
>>> x
0.1
>>> print '%.2f' % x
0.10
>>> print '%.3f' % x
0.100

所以在你的代码中,你的代码是这样应用的:

print "You sold stock worth ${:.2f}".format(sale_price)