如何让 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)
此程序旨在执行以下操作:
- 计算购买股票的购买价格(包括佣金)。
- 计算所购股票的售价(包括佣金)。
我希望将数字精确计算到小数点后两位。问题在于,如果用户在输入时不包含小数,则程序无法识别小数位。
这就是我添加 "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)