On 9/4/19 1:25 PM, Chris Angelico wrote:
On Thu, Sep 5, 2019 at 3:16 AM Dave via Python-list <[email protected]> wrote:All, I have been going in circles trying to format a floating point number so there is only 1 decimal place. In reading all of the gobble-gook that passes for Python advice, it looked like I should have done this: numStr = '3.14159' num = float(numstr) # OK so far numFmt = format(num, '{0:.1f}') # Errors on format string # --- Alternative that also does not work numFmt = float("{0:.1f}".format(numStr)) # --- numFmt = format(num, '0.1f') # Does workLet's start by eliminating a few possibilities here. Don't try formatting the original string, and don't call float() on the result afterwards; just start with a floating-point value, and then create a formatted string. If you think about starting with a value (which in this case is a number) and the need to make a displayable version (which implies that it's a string), your options basically look like this: num = 3.14159 num_fmt = format(num, ".1f") num_fmt = "{0:.1f}".format(num) num_fmt = f"{num:.1f}" All of these will give you back the string "3.1". All of them involve a format string of ".1f", and they differ only in how they're choosing which value to put there. Hopefully that will clear things up a bit. ChrisA
That helps! Thanks Chris. Dave, -- https://mail.python.org/mailman/listinfo/python-list
