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

Reply via email to