🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.python
Article #450

Re: Bledne zaokraglanie ulamkow

#450
From: Marcin Wojtczuk
Date: Sat, 28 Dec 2002 02:43
52 lines
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!news
References: <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