Roy Wang
Roy Wang

Reputation: 33

Python: How to print 100.0 instead of 100 in float

I am solving a Python exercise about class:

Define a class called Bank that accepts the name you want associated with your bank account in a string, and a float that represents the amount of money in the account. The constructor should initialize two instance variables from those inputs: name and amt. Add a string method so that when you print an instance of Bank, you see “Your account, [name goes here], has [start_amt goes here] dollars.” Create an instance of this class with "Bob" as the name and 100.0 as the amount. Save this to the variable t1.

I wrote the following:

class Bank:
def __init__(self, name, amt):
    self.name = name
    self.amt = amt

def __str__(self):
    return "Your account, {}, has {} dollars.".format(self.name, self.amt)

 t1 = Bank("Bob", 100.0)
 print(t1)

And the result I get is "Your account, Bob, has 100 dollars."

But the correct answer is "Your account, Bob, has 100.0 dollars."

How can I do to fix it? Thank you!

Upvotes: 3

Views: 1121

Answers (2)

U13-Forward
U13-Forward

Reputation: 71570

Or hack it:

return "Your account, {}, has {}.0 dollars.".format(self.name, self.amt)

Or use float:

return "Your account, {}, has {} dollars.".format(self.name, float(self.amt))

Upvotes: 1

iz_
iz_

Reputation: 16593

You can change your format:

def __str__(self):
    return "Your account, {0}, has {1:.1f} dollars.".format(self.name, self.amt)

Check out the Format Specification Mini-Language.

Upvotes: 5

Related Questions