# [Tutor] How to convert a long decimal into a string?

Dick Moores rdm at rcblue.com
Tue Jan 16 22:57:47 CET 2007

```At 12:47 PM 1/16/2007, you wrote:
>On Tue, 2007-01-16 at 12:28 -0800, Dick Moores wrote:
> > So I go with working up "an algorithm for first
> > converting n to an int (for
> > example, multiplying the above n by 1000), converting to a string,
> > putting the decimal point back in between indices 2 and 3, then using
> > that string as n (thereby avoiding the use of quotes around n as the
> > first argument)."
>
>This seems like a lot of effort for not much reward.  Where is n coming
>from?  If you already have something that holds the required level of
>precision, why does it need to be transformed?  Could it already be a
>string?  If n is entered through raw_input, then you received it as a
>string.
>
>I don't want to push you in the wrong direction, but it seems like there
>must be a better way.

LLoyd, Yes, that's right, isn't it. And functions I would use that
feed into numberRounding() would be things such as my decPow(), which
returns a string:   (All corrective comments on it are welcome!)
==============================
def decPow(n, power, precision=40):
"""
Raise any number n (as a string) to any integral power,
to any degree of precision.
"""
import decimal
def d(x):
return decimal.Decimal(str(x))

if power == 0:
return 1
elif power > 0:
decimal.getcontext().prec = precision
product = d(n)
for k in range(1,power):
product = product * d(n)
return product
elif power < 0:
decimal.getcontext().prec = precision
quotient = 1/d(n)
for k in range(1, -(power)):
quotient = quotient / d(n)
return quotient
================================

Still, I'd like to see if can write that algorithm. ;)

Thanks very much,

Dick

```