get number that is raised to the power of
Boris Borcic
bborcic at gmail.com
Fri May 2 06:02:50 EDT 2008
Marc 'BlackJack' Rintsch wrote:
> On Fri, 02 May 2008 19:19:07 +1000, Astan Chee wrote:
>
>> Hi,
>> Im not sure if this is more of a math question or a python question. I
>> have a variable in python:
>> >>> v = 10.0**n
>> is there a way to find the value of n if i know only v aside from
>> str(v).split('+')[1] ?
Astan, you could try something like (n for n in range(1,100) if
10.0**n==v).next() or like len(str(int(v)))-1
>> that seems like too much of a hack and I was
>> wondering if there was a faster way of doing it?
Faster ?! How fast do you need it to be ?
>
> That hack isn't even working properly because ``str(10.0**1)`` has no '+'
> in its string representation.
OTOH "%.0e" % (10.0**1) does
...but "%.0e" % (10.0**-1) of course doesn't
>
> Solution:
>
> n = math.log(v, 10)
>
> Ciao,
> Marc 'BlackJack' Rintsch
Beware of floating point approximations, though. Eg
>>> assert log(10**3,10)==3
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
assert log(10**3,10)==3
AssertionError
Cheers, BB
More information about the Python-list
mailing list