How convert string '1e7' to an integer?

View: New views
12 Messages — Rating Filter:   Alert me  

How convert string '1e7' to an integer?

by Peng Yu :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

It seems that int() does not convert '1e7'. I'm wondering what
function to use to convert '1e7' to an integer?

>>> int('1e7')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '1e7'
--
http://mail.python.org/mailman/listinfo/python-list

Parent Message unknown Re: How convert string '1e7' to an integer?

by mensanator@aol.com :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Nov 7, 7:17 pm, Peng Yu <pengyu...@...> wrote:
> It seems that int() does not convert '1e7'.

Because 'e' isn't a valid character in base 10.

> I'm wondering what
> function to use to convert '1e7' to an integer?
>
> >>> int('1e7')

>>> int(1e7)
10000000


>
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> ValueError: invalid literal for int() with base 10: '1e7'

--
http://mail.python.org/mailman/listinfo/python-list

Parent Message unknown Re: How convert string '1e7' to an integer?

by Mick Krippendorf :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Peng Yu wrote:
> It seems that int() does not convert '1e7'.
It seems it does, though:

>>> int('1e7', base=16)
487

Mick.
--
http://mail.python.org/mailman/listinfo/python-list

Re: How convert string '1e7' to an integer?

by MRAB-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Peng Yu wrote:
> It seems that int() does not convert '1e7'. I'm wondering what
> function to use to convert '1e7' to an integer?
>
>>>> int('1e7')
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> ValueError: invalid literal for int() with base 10: '1e7'

In Python the e-form indicates a float, as does the presence of a
decimal point, but you can convert to float and then to int:

 >>> int(float('1e7'))
10000000
--
http://mail.python.org/mailman/listinfo/python-list

Re: How convert string '1e7' to an integer?

by Ben Finney-10 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Mick Krippendorf <mad.mick@...> writes:

> Peng Yu wrote:
> > It seems that int() does not convert '1e7'.
> It seems it does, though:
>
> >>> int('1e7', base=16)
> 487

Well played, sir.

--
 \       “It is wrong to think that the task of physics is to find out |
  `\         how nature *is*. Physics concerns what we can *say* about |
_o__)                                             nature…” —Niels Bohr |
Ben Finney
--
http://mail.python.org/mailman/listinfo/python-list

Re: How convert string '1e7' to an integer?

by Gary Herron :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Mensanator wrote:
> On Nov 7, 7:17 pm, Peng Yu <pengyu...@...> wrote:
>  
>> It seems that int() does not convert '1e7'.
>>    
>
> Because 'e' isn't a valid character in base 10.
>  

But 1e7 is a valid float, so this works:

 >>> int(float('1e7'))
10000000

That has a problem though, if you surpass the ability of a float:

 >>> int(float('1e20'))
100000000000000000000L
 >>> int(float('1e30'))
1000000000000000019884624838656L


Gary Herron



>  
>> I'm wondering what
>> function to use to convert '1e7' to an integer?
>>
>>    
>>>>> int('1e7')
>>>>>          
>
>  
>>>> int(1e7)
>>>>        
> 10000000
>
>
>  
>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in <module>
>> ValueError: invalid literal for int() with base 10: '1e7'
>>    
>
>  

--
http://mail.python.org/mailman/listinfo/python-list

Re: How convert string '1e7' to an integer?

by Benjamin Kaplan-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Sat, Nov 7, 2009 at 8:17 PM, Peng Yu <pengyu.ut@...> wrote:
> It seems that int() does not convert '1e7'. I'm wondering what
> function to use to convert '1e7' to an integer?
>
>>>> int('1e7')
> Traceback (most recent call last):
>  File "<stdin>", line 1, in <module>
> ValueError: invalid literal for int() with base 10: '1e7'

Whenever you use that notation, you always get a float

>>> 1e7
10000000.0

So to convert '1e7' to a number, you need to use float('1e7') which
you can then convert to an int
>>> int(float('1e7'))
10000000



> --
> http://mail.python.org/mailman/listinfo/python-list
>
--
http://mail.python.org/mailman/listinfo/python-list

Re: How convert string '1e7' to an integer?

by Christian Heimes-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Peng Yu wrote:
> It seems that int() does not convert '1e7'. I'm wondering what
> function to use to convert '1e7' to an integer?

1e7 is a way to express a float in science and math. Try float("1e7")

Christian

--
http://mail.python.org/mailman/listinfo/python-list

Re: How convert string '1e7' to an integer?

by Tim Chase-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Mick Krippendorf wrote:
> Peng Yu wrote:
>> It seems that int() does not convert '1e7'.
> It seems it does, though:
>
>>>> int('1e7', base=16)
> 487

Bah...so narrow-minded ;-)

 >>> print '\n'.join("Base %i: %i" % (base, int('1e7',
base=base)) for base in range(15,37))
Base 15: 442
Base 16: 487
Base 17: 534
Base 18: 583
Base 19: 634
Base 20: 687
Base 21: 742
Base 22: 799
Base 23: 858
Base 24: 919
Base 25: 982
Base 26: 1047
Base 27: 1114
Base 28: 1183
Base 29: 1254
Base 30: 1327
Base 31: 1402
Base 32: 1479
Base 33: 1558
Base 34: 1639
Base 35: 1722
Base 36: 1807

I feel so dirty interpreting numbers in convenient ways...like an
accountant.  ("whaddaya mean I can't file my tax-return in base
17?!  There's nothing in the supporting documentation that
mentions such draconian restrictions!")

-tkc




--
http://mail.python.org/mailman/listinfo/python-list

Parent Message unknown Re: How convert string '1e7' to an integer?

by Roel Schroeven :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Gary Herron schreef:

> Mensanator wrote:
>> On Nov 7, 7:17 pm, Peng Yu <pengyu...@...> wrote:
>>  
>>> It seems that int() does not convert '1e7'.
>>>    
>> Because 'e' isn't a valid character in base 10.
>>  
>
> But 1e7 is a valid float, so this works:
>
>  >>> int(float('1e7'))
> 10000000
>
> That has a problem though, if you surpass the ability of a float:
>
>  >>> int(float('1e20'))
> 100000000000000000000L
>  >>> int(float('1e30'))
> 1000000000000000019884624838656L

If that is a concern, decimal can help:

>>> import decimal
>>> int(decimal.Decimal('1e30'))
1000000000000000000000000000000L

--
The saddest aspect of life right now is that science gathers knowledge
faster than society gathers wisdom.
  -- Isaac Asimov

Roel Schroeven
--
http://mail.python.org/mailman/listinfo/python-list

Re: How convert string '1e7' to an integer?

by Thomas-259 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Just a curiosity, why does Python do this?

>>> l = [(base, int('1e7', base=base)) for base in range(15,37)]
>>> l
[(15, 442), (16, 487), (17, 534), (18, 583), (19, 634), (20, 687),
(21, 742), (22, 799), (23, 858), (24, 919), (25, 982), (26, 1047),
(27, 1114), (28, 1183), (29, 1254), (30, 1327), (31, 1402), (32,
1479), (33, 1558), (34, 1639), (35, 1722), (36, 1807)]
>>> l = ([base, int('1e7', base=base)] for base in range(15,37))
>>> l
<generator object at 0x027803A0>
>>>
--
http://mail.python.org/mailman/listinfo/python-list

Re: How convert string '1e7' to an integer?

by Mick Krippendorf :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Thomas wrote:
> Just a curiosity, why does Python do this?
>
>>>> [(base, int('1e7', base=base)) for base in range(15,37)]
> [(15, 442), (16, 487), (17, 534), (18, 583), (19, 634), (20, 687),
> (21, 742), (22, 799), (23, 858), (24, 919), (25, 982), (26, 1047),
> (27, 1114), (28, 1183), (29, 1254), (30, 1327), (31, 1402), (32,
> 1479), (33, 1558), (34, 1639), (35, 1722), (36, 1807)]
>>>> ([base, int('1e7', base=base)] for base in range(15,37))
> <generator object at 0x027803A0>
Because the former is a list comprehension, whereas the latter is a
generator expression.

Mick.
--
http://mail.python.org/mailman/listinfo/python-list