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

标签 python python-2.7 decimal

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

  • 计算所购买股票的购买价格(包括佣金)。
  • 计算所购买股票的售价(包括佣金)。

我希望这些数字能够精确计算到小数点后两位。问题是,如果用户在输入过程中不包含小数,则程序无法识别小数位。

这就是为什么我添加了“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

最佳答案

对于金钱的东西,你需要精度,你必须使用十进制模块并将所有数字转换为十进制,如下所示:

from decimal import *
Decimal(number)

所以你应该将所有输入转换为 Decimal

shares_purchased = Decimal(input("How many shares were bought? ")).

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

print "You purchased stock worth ", purchase_price

而不是

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

参见https://docs.python.org/2/library/decimal.html获取模块的文档。

关于python - 如何让 Python 处理 int 输入,将它们转换为两位小数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34497398/

相关文章:

python - 用python拟合直方图

python - 如何用Python实时绘制每秒15000点连续读取的数据?

python - 如何在 Breve Simulator 中为机器人添加摄像头?

python - 在一行中运行多行 for 循环

python - 如何查看数字是否以 .0 结尾

java - 限制小数位数

python - 你如何从 Python 的 Sprite 表中选择 Sprite 图像?

python - 创建一个 bool 数组,将 numpy 元素与 None 进行比较

python - 使用生成器表达式返回多个值

ruby - 如何使用 ruby​​ 将十六进制转换为 uint8_t