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
--
http://mail.python.org/mailman/listinfo/python-list