On Jul 19, 5:11?pm, Zentrader <[EMAIL PROTECTED]> wrote: > On Jul 17, 2:13 pm, "Dee Asbury" <[EMAIL PROTECTED]> wrote: > > > In multiplying a value of xe^-325 with ye^-4, Python is returning zero. How > > do I get it to give me back my tiny value? > > > Thanks! > > Dee > > Also, Python's decimal class allows theoretically unlimited > precision. I have extremely limited knowledge here. It gives the > following for 2**-325. I have no idea if the answer is correct.
Looks ok, you should get about 0.3 as many decimal digits as bits. > You'll have to see if gmpy or decimal works better for this. One > piece of advice is to use whichever exclusively. If you use a float > and then covert to either one, the result will be corrupted. > import decimal > decimal.getcontext().prec = 375 ## set precision at 375 > print "2**-325 =", decimal.Decimal(str(2**-325)) > > 2**-325 = 1.46302386084E-98 Interestingly, using str() causes you to lose precision. >>> a = 2**-325 >>> a 1.463023860841312e-098 >>> b = str(a) >>> b '1.46302386084e-098' Setting the precision to 375 didn't help because you corrupted the value before you converted it to decimal. Although the 375 will allow you to do this: >>> a = decimal.Decimal('1e-325') >>> b = decimal.Decimal('1e-4') >>> a Decimal("1E-325") >>> b Decimal("0.0001") >>> a+b Decimal("0.0001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001") You can also do this in gmpy, although you set precision in bits, not decimal digits. -- http://mail.python.org/mailman/listinfo/python-list