Odd ValueError using float

emile emile at fenx.com
Sat Mar 14 13:08:01 EDT 2015


On 03/14/2015 09:08 AM, Peter Otten wrote:
> emile wrote:
>
>> 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.
>
> Why are you checking
>
> int(decval)


because it sure smells like int should work:

(Pdb) "3"<decval<"5"
True


>
> when the actual failing expression is
>
> round(float(decval),1)
>
> ? Try to evaluate the latter in the debugger, and if that gives no clue
> change
>
>>>>> 139         try:
>>>>> 140             val = round(float(decval),1)
>>>>> 141         except:
>>>>> 142             import pdb; pdb.set_trace()
>
> to just
>
> val = round(float(decval), 1)
>
> to get a meaningful traceback and post that.

I don't get a traceback -- it spews:

Fatal Python error: deletion of interned string failed

This application has requested the Runtime to terminate it in an unusual 
way.
Please contact the application's support team for more information.

then crashes and I get a Microsoft pop-up that says python.exe has 
encountered a problem and needs to close.

Emile







More information about the Python-list mailing list