Odd ValueError using float

emile emile at fenx.com
Sat Mar 14 11:28:23 EDT 2015


On 03/13/2015 08:09 PM, Chris Angelico wrote:
> On Sat, Mar 14, 2015 at 1:33 PM, Paul Rubin <no.email at nospam.invalid> wrote:
>> emile <emile at fenx.com> writes:
>>> *** NameError: name 'val' is not defined
>>> (Pdb) l
>>> 139         try:
>>> 140             val = round(float(decval),1)
>>> 141         except:
>>> 142             import pdb; pdb.set_trace()
>>
>> If 'float' or 'round' throw an exception, the assignment to 'val' never
>> happens, so 'val' is undefined.  Try examining the value of 'decval' in
>> the debugger to see what is making the conversion fail.
>
> That's exactly what the OP did :) Trouble is, it didn't help, because
> it sure looked as if decval was the string '4'. My best guess was -
> and is - that it's not just a string. We're looking at an SQL
> interface routine here, so it may be that there's a string subclass
> that length-limits itself, on the assumption that it's going into a
> fixed-length database field.

It ran almost to completion before generating the error again --

(Pdb) decval
'4'
(Pdb) type(decval)
<type 'str'>
(Pdb) len(decval)
1
(Pdb) int(decval)
*** ValueError: invalid literal for int() with base 10: '41.700000000000003'

So there's still something amiss.

Emile




More information about the Python-list mailing list