Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3316180
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 17, 20262026-05-17T22:26:20+00:00 2026-05-17T22:26:20+00:00

[Python 3.1] I’m following up on this answer : class prettyfloat(float): def __repr__(self): return

  • 0

[Python 3.1]

I’m following up on this answer:

class prettyfloat(float):
  def __repr__(self):
    return "%0.2f" % self

I know I need to keep track of my float literals (i.e., replace 3.0 with prettyfloat(3.0), etc.), and that’s fine.

But whenever I do any calculations, prettyfloat objects get converted into float.

What’s the easiest way to fix it?

EDIT:

I need exactly two decimal digits; and I need it across the whole code, including where I print a dictionary with float values inside. That makes any formatting functions hard to use.

I can’t use Decimal global setting, since I want computations to be at full precision (just printing at 2 decimal points).

@Glenn Maynard: I agree I shouldn’t override __repr__; if anything, it would be just __str__. But it’s a moot point because of the following point.

@Glenn Maynard and @singularity: I won’t subclass float, since I agree it will look very ugly in the end.

I will stop trying to be clever, and just call a function everywhere a float is being printed. Though I am really sad that I can’t override __str__ in the builtin class float.

Thank you!

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-17T22:26:21+00:00Added an answer on May 17, 2026 at 10:26 pm

    I had a look at the answer you followed up on, and I think you’re confusing data and its representation.

    @Robert Rossney suggested to subclass float so you could map() an iterable of standard, non-adulterated floats into prettyfloats for display purposes:

    # Perform all our computations using standard floats.
    results = compute_huge_numbers(42)
    # Switch to prettyfloats for printing.
    print(map(prettyfloat, results))
    

    In other words, you were not supposed to (and you shouldn’t) use prettyfloat as a replacement for float everywhere in your code.

    Of course, inheriting from float to solve that problem is overkill, since it’s a representation problem and not a data problem. A simple function would be enough:

    def prettyfloat(number):
        return "%0.2f" % number  # Works the same.
    

    Now, if it’s not about representation after all, and what you actually want to achieve is fixed-point computations limited to two decimal places everywhere in your code, that’s another story entirely.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Python has this wonderful way of handling string substitutions using dictionaries: >>> 'The %(site)s
Python gives us the ability to create 'private' methods and variables within a class
Python works on multiple platforms and can be used for desktop and web applications,
Python uses the reference count method to handle object life time. So an object
Python's convention is that variables are created by first assignment, and trying to read
Python for Unix and Linux System Administration is aimed at sysadmins. Any other favorites
Python, through it's readline bindings allows for great command-line autocompletion (as described in here
Python's access to environment variables does not accurately reflect the operating system's view of
python's time module seems a little haphazard. For example, here is a list of
Python's IDLE has 'Check Module' (Alt-X) to check the syntax which can be called

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.