Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #87432

Re: Odd ValueError using float

From emile <emile@fenx.com>
Subject Re: Odd ValueError using float
Date 2015-03-14 10:08 -0700
References <mailman.336.1426284641.21433.python-list@python.org> <877fuk71fz.fsf@nightsong.com> <CAPTjJmoxL0ux3mHAd8UCZmdbTHe_Yz5i9Y8XrzJ7NAuy8WZ4sA@mail.gmail.com> <me1k2i$ljt$1@ger.gmane.org> <me1mdb$nri$1@ger.gmane.org>
Newsgroups comp.lang.python
Message-ID <mailman.362.1426352884.21433.python-list@python.org> (permalink)

Show all headers | View raw


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@nospam.invalid>
>>> wrote:
>>>> emile <emile@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



Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Odd ValueError using float emile <emile@fenx.com> - 2015-03-13 15:10 -0700
  Re: Odd ValueError using float Paul Rubin <no.email@nospam.invalid> - 2015-03-13 19:33 -0700
    Re: Odd ValueError using float Chris Angelico <rosuav@gmail.com> - 2015-03-14 14:09 +1100
    Re: Odd ValueError using float emile <emile@fenx.com> - 2015-03-14 08:28 -0700
    Re: Odd ValueError using float Chris Angelico <rosuav@gmail.com> - 2015-03-15 02:52 +1100
    Re: Odd ValueError using float Peter Otten <__peter__@web.de> - 2015-03-14 17:08 +0100
    Re: Odd ValueError using float emile <emile@fenx.com> - 2015-03-14 10:08 -0700
    Re: Odd ValueError using float emile <emile@fenx.com> - 2015-03-14 10:17 -0700
    Re: Odd ValueError using float Peter Otten <__peter__@web.de> - 2015-03-14 19:24 +0100
    Re: Odd ValueError using float emile <emile@fenx.com> - 2015-03-14 13:01 -0700
    Re: Odd ValueError using float Peter Otten <__peter__@web.de> - 2015-03-15 15:01 +0100
    Re: Odd ValueError using float emile <emile@fenx.com> - 2015-03-17 13:48 -0700

csiph-web