python - 在 Python 中将答案四舍五入到小数点后两位

标签 python currency rounding

我遇到的问题是我将结果四舍五入到小数点后两位。我的应用程序获得了正确的结果,但是,我很难像使用货币那样将应用程序四舍五入到最接近的小数位

cost = input("\nEnter the 12 month cost of the Order: ")
cost = float(cost)

print("\n12 Month Cost:",
  cost * 1,"USD")
print("6 Month Cost:",
  cost * 0.60,"USD")
print("3 Month Cost:",
  cost * 0.36,"USD")

例如,如果 12 个月的价格为 23 美元,则 6 个月的价格为 13.799999999999999,但我希望它显示 13.80

我在 google 上四处寻找如何四舍五入一个数字,但找不到太多关于四舍五入结果的帮助。

最佳答案

您应该使用格式说明符:

print("6 Month Cost: %.2fUSD" % (cost * .6))

更好的是,您根本不应该依赖 float 并使用 decimal取而代之的是模块,它为您提供了任意精度和对舍入方法的更多控制:

from decimal import Decimal, ROUND_HALF_UP
def round_decimal(x):
  return x.quantize(Decimal(".01"), rounding=ROUND_HALF_UP)

cost = Decimal(input("Enter 12 month cost: "))
print("6 Month Cost: ", round_decimal(cost * Decimal(".6")))

关于python - 在 Python 中将答案四舍五入到小数点后两位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13463556/

相关文章:

api - Paypal 钱请求奇怪的api

c# - 将 float 舍入为 -1、0 或 1

python - 类可变性

python - 尝试将 xarray 写入 netcdf 时出现 "ValueError: chunksize cannot exceed dimension size"

python - __call__ 与 __init__ : Who gets the arguments? 谁先被调用?

python - IndexError : list index out of range when in python, 即使范围存在

spring - ISO货币 list

java - 如何检查Currency.getAvailableCurrency() 是否包含我的字符串值?

java - 将 Double 转换为 Int 时的不同答案 - Java 与 .Net

rounding - 为什么 _mm_mulhrs_epi16() 总是偏舍入到正无穷大?