Numbers in python

Fredrik Lundh fredrik at pythonware.com
Fri Mar 10 16:01:44 CET 2006


brainy_muppet at hotmail.com wrote:

> Basically, I have a code with is almost finished but I've having
> difficultly with the last stage of the process. I have a program that
> gets assigns different words with a different value via looking them up
> in a dictionary:
>
> eg if THE is in the writing, it assigns 0.965
>
> and once the whole passage is read it returns all the numbers in the
> format as follows:
>
> ['0.965', '1.000', '0.291', '1.000', '0.503']
>
> However, I can't seem to get the program to treat the numbers as
> numbers. If I put them in the dictionary as 'THE' = int(0.965) the
> program returns 1.0 and if I put 'THE' = float(0.965) it returns
> 0.96555555549 or something similar. Neither of these are right!

int(0.965) is 0 and int("0.965") is an error, so I'm not sure what you
did to get 1.0.

but 0.965 and 0.96499999999999997 is indeed the same thing, when
stored as binary floating point numbers:

    >>> 0.965
    0.96499999999999997
    >>> 0.965 == 0.96499999999999997
    True

for an explanation, see this page:

    http://docs.python.org/tut/node16.html

in your case, explicitly formatting the numbers on the way might be good
enough, e.g.

    print "%.3f" % value

for details, see:

    http://docs.python.org/lib/typesseq-strings

if you really need support for decimal floating point arithmetics, see:

    http://docs.python.org/lib/module-decimal.html

</F> 






More information about the Python-list mailing list