python - Format value to float with width and precision -
i validate string input verify if formated valid float given width , precision.
width = 10 precision = 4 value = '12' try: "{10.4f}".format(value) except: print "not valid" this test fails should works because 12 considered float 12.0000
i have dynamic test because width , precision variables.
thank help!
you forgot : colon:
"{:10.4f}".format(float(value)) otherwise python interprets first digit positional parameter index.
each parameter can set it's own placeholder:
"{value:{width}.{precision}f}".format( value=float(value), width=width, precision=precision) width , precision arguments interpolated before value formatted.
this is, however, not test floating point inputs. float value 12.234 cannot represented; binary fractions can approximate it:
>>> format(12.234, '.53f') '12.23399999999999998578914528479799628257751464843750000' so value wouldn't 'fit' 10.4 constraints, yet when rounded valid input give.
any floating point value can formatted fixed width, in case:
>>> format(10**11 + 0.1, '10.4f') '100000000000.1000' no valueerror raised; 10 in width parameter means: produce string @ least many characters wide, pad spaces if shorter, , width includes decimal point , decimals.
to validate floating point input, best can test can converted float, , test mininum , maxmimum values:
try: value = float(value) except valueerror: # cannot converted valid float return "not valid input" else: if 0 <= value < 10 ** 11: return "value out of range"
Comments
Post a Comment