>>> int('1e7')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '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
>>> int('1e7', base=16)
487
Mick.
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
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
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
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
1e7 is a way to express a float in science and math. Try float("1e7")
Christian
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
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
>>> 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>
>>>
Mick.