在Python中将一个浮点数转换为字符串时保留小数位

问题描述:

我正在为学校编写一个ATM程序。我一直在进行大量的研究,试图弄清楚为什么当我的数字是100.00时,当他们被当作字符串时,他们变成了100.0。我尝试过很多不同的东西,但总是会出错。在Python中将一个浮点数转换为字符串时保留小数位

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 

应>

Withdrawal amount was $100.00, current balance is $400.25 

过程中,如果您正在使用Python 3.X然后退出代码为0

+2

[限制浮到两个小数分](https://*.com/questions/455612/limiting-floats-to-two-decimal-points) – mkrieger1

+0

使用那些注释线路用的可能的复制' {:,2F} .format(...)'。 – mkrieger1

+0

并将一个数字,而不是一个字符串传递给“存款”功能。 (您需要将输入的结果转换为数字。) – mkrieger1

完成有一个简单的方法去做。

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 
+0

我得到这些错误: Traceback(最近一次调用最后一次): 文件“G:/ SNHU/1 - CURRENT/IT-140 Python脚本编写简介(10-30-17至12-24-17)/ Module 5/ATM”,第44行, 存款(deposit_amount,余额) 文件“G:/ SNHU/1 - CURRENT/IT-140 Python脚本简介(10-30-17至12-24-17)/ Module 5/ATM”,第20行,存款 deposit_amount =“{:,。2f}”。format(deposit_amount) ValueError:类型为'str'的对象的未知格式代码'f' –

+0

为什么在那里有一个逗号“{:','。2f }” –