Article View: pl.comp.lang.python
Article #450Re: Bledne zaokraglanie ulamkow
From: Marcin Wojtczuk
Date: Sat, 28 Dec 2002 02:43
Date: Sat, 28 Dec 2002 02:43
52 lines
2420 bytes
2420 bytes
Marcin 'Qrczak' Kowalczyk claimed:
> Wed, 25 Dec 2002 17:10:15 GMT, moozg <moozg@k2studio.com.pl> pisze:
>
>> Ale jesli wywoluje funkcje tak: round(32.26351263561, 2) co ma
>> zaokraglic liczbe do dwoch miejsc za przecinkiem otrzymuje cos
>> takiego: 31.969999999999999
>
> Bo 31.97 nie jest reprezentowalne w typie double w C,
Bzdura:
Po pierwsze:
31,97 = $1F.61 = $1.F61 * 16.
Znak: 0
Cecha: $F61
Mantysa: 4
Więc chyba 64 bity starczą ? :)
Po drugie:
#v+
/* Number of decimal digits of precision in a double */
#define DBL_DIG 15
#v-
(cytat z float.h). Czyli każda liczba o mniej niż 15 cyfrach po przecinku
jest w double reprezentowana DOKŁADNIE.
> czyli też w typie
> float w Pythonie. To, co dostajesz, jest najlepszym przybliżeniem.
Python ma jakieś niejasne zasady precyzji artmetyki. Ktoś wie jakie ?
> Po przetłumaczeniu na ułamek dziesiętny widać, że to ciut mniej
> niż 31.97; następna reprezentowalna wartość jest ciut większa niż
> 31.97. Więc co chcesz uzyskać? Dokładna liczba 31.97 w typie float
> nie istnieje.
Taak ?
#v+
/* Number of decimal digits of precision in a float */
#define FLT_DIG 6
#v-
> str pokazuje o jedną mniej cyfr niż repr, więc str od Twojej liczby
> da '31.97'. Więc nie przejmuj się, że jak się ją wpisze w prompcie,
> to widać więcej cyfr (to jest wyświetlane przez repr).
Fajnie by było wiedzieć jaką logiką kieruje się tutaj python.
--
[ http://www.stringi.com/viper/ ]
All good things come to those who wait
Technical Details
Message-ID:
<853jua-58g.ln@fastviper.viper.lan>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.man.poznan.pl!news.telbank.pl!fastviper.viper.lan!newsReferences:
<3e09e4d7.2127062@news.icpnet.pl> <slrnb0jrgs.u54.qrczak@qrnik.zagroda>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.man.poznan.pl!news.telbank.pl!fastviper.viper.lan!news From: Marcin Wojtczuk <fastviper@telkab.pl> Newsgroups: pl.comp.lang.python Subject: Re: Bledne zaokraglanie ulamkow Date: Sat, 28 Dec 2002 03:43:52 +0100 Organization: PLD Lines: 52 Message-ID: <853jua-58g.ln@fastviper.viper.lan> References: <3e09e4d7.2127062@news.icpnet.pl> <slrnb0jrgs.u54.qrczak@qrnik.zagroda> NNTP-Posting-Host: net2-3.telkab.pl Mime-Version: 1.0 X-Trace: news.telbank.pl 1041043310 3665 195.136.7.130 (28 Dec 2002 02:41:50 GMT) X-Complaints-To: usenet@news.telbank.pl NNTP-Posting-Date: 28 Dec 2002 02:41:50 GMT X-Licznik: 1948 User-Agent: slrn/0.9.7.4 (pl-1.4.3) (Linux/2.4.19pk-ll (i686)) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit