calculator με ιστορικό - δοκιμή του bc

Giorgos Keramidas keramida at ceid.upatras.gr
Fri May 19 16:08:18 EEST 2006


On 2006-05-19 15:09, Αλέξανδρος Διαμαντίδης <adia at hellug.gr> wrote:
> adia at rita ~ $ python
> Python 2.4.3 (#1, May  5 2006, 18:49:10)
> [GCC 3.4.6 (Gentoo 3.4.6-r1, ssp-3.4.5-1.0, pie-8.7.9)] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
> >>> 1+2+3+4+5
> 15
> >>> _*300
> 4500
> >>>

Το σκέφτηκα κι εγώ αυτό, αλλά μετά θυμήθηκα το εξής:

    $ python
    Python 2.3.5 (#2, Mar  6 2006, 10:12:24)
    [GCC 4.0.3 20060304 (prerelease) (Debian 4.0.2-10)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 4.1
    4.0999999999999996
    >>>

Oops!

Γενικά, υπάρχουν λύσεις που να φαίνεται το προηγούμενο αποτέλεσμα, και
μάλιστα το IPython shell έχει ωραία κόλπα -- όπως, για παράδειγμα, πολύ
περισσότερα _XXX dynamic vars, με βάση τα νούμερα των Out[XXX]
αποτελεσμάτων:

    $ ipython
    Python 2.4.3 (#2, May 12 2006, 22:01:16)
    Type "copyright", "credits" or "license" for more information.

    IPython 0.7.1.fix1 -- An enhanced Interactive Python.
    ?       -> Introduction to IPython's features.
    %magic  -> Information about IPython's 'magic' % functions.
    help    -> Python's own help system.
    object? -> Details about 'object'. ?object also works, ?? prints more.

    In [1]: 3
    Out[1]: 3

    In [2]: 3.14
    Out[2]: 3.1400000000000001

    In [3]: _1 + _2
    Out[3]: 6.1400000000000006

    In [4]:

Η Python όμως, μου φαίνεται ότι θα παραξενέψει κάποιον που πιστεύει ότι
το 4.1 είναι *ΑΚΡΙΒΩΣ* 4.1 ακόμα κι όταν αποθηκεύεται με την
floating-point αναπαράσταση που ξέρει η Python.

Φυσικά, τα νούμερα των υπολογισμών μπορούν να ΕΙΝΑΙ σωστά, αλλά η τιμή
που τυπώνεται by default θα παραξενέψει πολύ κόσμο:

    In [1]: 3.1
    Out[1]: 3.1000000000000001

    In [2]: print "%3.5f" % _1
    3.10000

    In [3]: print "%3.2f" % _1
    3.10

    In [4]: _1
    Out[4]: 3.1000000000000001

Από την άλλη, αν είναι να μάθεις Python για να τυπώσεις σωστά τα
αποτελέσματα, τότε πέτυχες το σκοπό του να έχεις ένα ωραίο interactive
calculator, αλλά δε νομίζω να μπορεί αυτό να το χρησιμοποιήσει ο Joe
Ramdom λογιστής :-(




More information about the Linux-greek-users mailing list