在Python中将float转换为字符串时保留小数位

时间:2017-12-03 01:43:52

标签: python-3.x

我正在为学校写一个ATM程序。我一直在进行大量的研究,试图找出为什么当我的数字像100.00时,当他们成为字符串时,他们变成100.0。我尝试过很多不同的事情,但总是会出错。

import sys

#account balance
acct_bal = float(500.25)
deposit_amount = float(0.00)
balance = float(0.00)
withdrawal_amount = float(0.00)

#<--------functions go here-------------------->
#printbalance function, choice B
def account_balance(acct_bal):
    print("Your current balance:")
    print(acct_bal)

#deposit function, choice D
def deposit(deposit_amount, balance):
    print("Deposit was $" + str(float(deposit_amount)) + ", current balance is $" + str(float(balance)))
    #print("Deposit was $" + "{:,.2f}".format(deposit_amount) + ", current balance is $" + "{:,.2f}".format(balance))
    #This one causes an error
    #Traceback (most recent call last):
    #File "G:/SNHU/1 - CURRENT/IT-140 Introduction to Scripting Python (10-30-17 to 12-24-17)/Module 5/ATM", line 29, in <module>
    #deposit(deposit_amount, balance)
    #File "G:/SNHU/1 - CURRENT/IT-140 Introduction to Scripting Python (10-30-17 to 12-24-17)/Module 5/ATM", line 17, in deposit
    #print("Deposit was $" + "{:,.2f}".format(deposit_amount) + ", current balance is $" + "{:,.2f}".format(balance))
    #ValueError: Unknown format code 'f' for object of type 'str'

#withdraw function, choice W
def withdrawal(withdrawal_amount, balance):
    print("Withdrawal amount was $" + str(float(withdrawal_amount)) + ", current balance is $" + str(float(balance)))

#User Input goes here, use if/else conditional statement to call function based on user input
userchoice = input("What would you like to do?\n")

if (userchoice == "D"):
    deposit_amount = input("How much would you like to deposit today?\n")
    balance = acct_bal + float(deposit_amount)
    deposit(deposit_amount, balance)
elif (userchoice == "B"):
    account_balance(acct_bal)
else:
    withdrawal_amount = input("How much would you like to withdraw?\n")
    balance = acct_bal - float(withdrawal_amount)
    withdrawal(withdrawal_amount, balance)

这是我得到的输出:

What would you like to do?
W
How much would you like to withdraw?
100
Withdrawal amount was $100.0, current balance is $400.25

应该是&gt;

Withdrawal amount was $100.00, current balance is $400.25

处理完成,退出代码为0

1 个答案:

答案 0 :(得分:0)

如果您使用的是python 3.x,那么有一种简单的方法可以解决它。

value = 100.000

#the .2f specifys the number of trailing values after the decimal you want
final = "{:.2f}".format(value)

print(final)
#output:100.00
#NOTE: it will be in string
#if you want more formatting options you can check the python docs