【问题标题】:Python: Print floating point numbers with two digits after decimalPython:打印小数点后两位的浮点数
【发布时间】:2021-09-09 01:01:05
【问题描述】:

编写一个程序,询问用户某件商品的价格,然后打印出该商品的账单。账单包括商品价格、商品的销售税以及客户支付的总金额。销售税为商品价格的 5%。总账单是商品的价格加上销售税。

如果商品价格为 99 美元,账单将如下所示:

价格 $99.00 营业税 4.95 总计 103.95 美元

这是我目前所拥有的:

price = float(input("Price $"))
tax = .05
salestax = (price*tax)
total = ((price*tax)+ price)
print("Sales tax  ", salestax)
print("Total $", total)

有人可以帮我把打印的值保留两位小数吗?

现在这是我的输出:

Price $99
Sales tax   4.95
Total $ 103.95

显然,间距是错误的,并不是所有的美元金额都有 2 个小数位

【问题讨论】:

  • 转成字符串,用.分割,看第二个元素是否存在。如果是这样,计算数字并用0 填充剩余的数字。如果没有,请在末尾添加.00
  • 这能回答你的问题吗? Limiting floats to two decimal points
  • "%.2f" ,这是我的教授使用的,但我不知道如何正确地将其添加到我的代码中。
  • print("Sales tax %.2f" % tax)
  • 如果您的教授需要某种格式化方法,请在您的问题陈述中说明这一点。听起来好像您的教授期望 printf 样式的输出,而您的问题主要集中在如何打印小数位数(小数点右侧的位数)为 2 的十进制值。

标签: python


【解决方案1】:

您可以使用print(f'{total:.2f}) 打印浮点数后的前两个数字。或者,如果你愿意,你可以改变句子中“.2f”的数量。

或者,您可以使用round() 函数。试试这个:round(total, 2) 2 数字代表点后会出现多少个数字。

【讨论】:

  • 很遗憾,这不是我的教授教我的,所以我不能用这个,但是谢谢。
【解决方案2】:

我假设您在输入浮点数作为价格(99.99 美元)时遇到了问题。

您可以使用 str(round(total, 2)) 将数字四舍五入到小数点后第二位。

price = float(input("Price $"))
tax = .05
salestax = (price*tax)
total = ((price*tax)+ price)
print("Sales tax  $" + str(round(salestax, 2)))
print("Total $" + str(round(total, 2)))

输出到:

Price $45
Sales tax  $2.25
Total $47.25

您可能会遇到四舍五入的错误,即销售税只会列出小数点后 1 位,例如 $5.0。但应该适用于大多数价格。

【讨论】:

  • 很遗憾,这不是我的教授教我的,所以我不能用这个,但是谢谢。
  • 但是是的,我遇到了输出间隔不正确的问题
  • 你将如何使输入也是 2 位小数?
猜你喜欢
  • 1970-01-01
  • 2011-11-18
  • 1970-01-01
  • 1970-01-01
  • 2023-02-03
  • 2021-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多