Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #32579 > unrolled thread

Porównywanie liczb, double float

Started by"Pszemol" <Pszemol@PolBox.com>
First post2019-06-12 07:17 -0500
Last post2019-06-13 17:28 +0200
Articles 20 on this page of 120 — 24 participants

Back to article view | Back to pl.comp.programming


Contents

  Porównywanie liczb, double float "Pszemol" <Pszemol@PolBox.com> - 2019-06-12 07:17 -0500
    Re: Porównywanie liczb, double float Mateusz Viste <mateusz@nie.pamietam> - 2019-06-12 12:29 +0000
      Re: Porównywanie liczb, double float queequeg@trust.no1 (Queequeg) - 2019-06-12 14:53 +0000
      Re: Porównywanie liczb, double float Cezary Grądys <czarekgr@wa.onet.pl> - 2019-06-12 16:54 +0200
        Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-16 21:40 +0200
          Re: Porównywanie liczb, double float bartekltg <bartekltg@gmail.com> - 2019-06-16 18:44 -0700
            Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-19 08:15 +0200
          Re: Porównywanie liczb, double float Piotr Wyderski <peter.pan@neverland.mil> - 2019-06-17 09:43 +0200
            Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-19 08:20 +0200
            Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-19 08:59 +0200
          Re: Porównywanie liczb, double float "J.F." <jfox_xnospamx@poczta.onet.pl> - 2019-06-17 16:14 +0200
            Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-19 08:32 +0200
          Re: Porównywanie liczb, double float DMR <mezzogm@gmail.com> - 2019-07-11 22:27 -0700
            Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-07-13 09:21 +0200
              Re: Porównywanie liczb, double float DMR <mezzogm@gmail.com> - 2019-07-14 01:16 -0700
                Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-07-16 00:05 +0200
            Re: Porównywanie liczb, double float fir <profesor.fir@gmail.com> - 2019-07-22 08:24 -0700
              Re: Porównywanie liczb, double float DMR <mezzogm@gmail.com> - 2019-07-24 10:19 -0700
                Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-07-24 21:13 +0200
                Re: Porównywanie liczb, double float fir <profesor.fir@gmail.com> - 2019-07-24 13:39 -0700
                  Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-07-26 20:35 +0200
            Re: Porównywanie liczb, double float DMR <mezzogm@gmail.com> - 2020-01-12 10:17 -0800
      Re: Porównywanie liczb, double float "Pszemol" <Pszemol@PolBox.com> - 2019-06-13 08:37 -0500
        Re: Porównywanie liczb, double float bartekltg <bartekltg@gmail.com> - 2019-06-13 14:22 -0700
          Re: Porównywanie liczb, double float JDX <jdx@onet.pl> - 2019-06-14 06:35 +0200
          Re: Porównywanie liczb, double float Mateusz Viste <mateusz@wont.tell> - 2019-06-14 06:19 +0000
            Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-16 21:53 +0200
              Re: Porównywanie liczb, double float Mateusz Viste <mateusz@wont.tell> - 2019-06-17 07:02 +0000
                Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-19 08:18 +0200
                  Re: Porównywanie liczb, double float Mateusz Viste <mateusz@wont.tell> - 2019-06-19 07:03 +0000
                    Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-25 21:32 +0200
                      Re: Porównywanie liczb, double float Mateusz Viste <mateusz@wont.tell> - 2019-06-25 20:05 +0000
                        Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-25 22:17 +0200
                          Re: Porównywanie liczb, double float Mateusz Viste <mateusz@wont.tell> - 2019-06-25 20:45 +0000
                            Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-25 22:56 +0200
          Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-16 21:48 +0200
          Re: Porównywanie liczb, double float Tomasz Kaczanowski <kaczus@poczta.onet.pl> - 2019-06-19 11:21 +0200
        Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-16 21:43 +0200
          Re: Porównywanie liczb, double float Mateusz Viste <mateusz@nie.pamietam> - 2019-06-17 07:21 +0000
          Re: Porównywanie liczb, double float Piotr Wyderski <peter.pan@neverland.mil> - 2019-06-17 09:48 +0200
            Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-19 08:21 +0200
              Re: Porównywanie liczb, double float Piotr Wyderski <peter.pan@neverland.mil> - 2019-06-19 09:17 +0200
          Re: Porównywanie liczb, double float "J.F." <jfox_xnospamx@poczta.onet.pl> - 2019-06-17 16:09 +0200
            Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-19 08:27 +0200
              Re: Porównywanie liczb, double float "J.F." <jfox_xnospamx@poczta.onet.pl> - 2019-06-19 11:45 +0200
                Re: Porównywanie liczb, double float Mateusz Viste <mateusz@nie.pamietam> - 2019-06-19 11:40 +0000
                  Re: Porównywanie liczb, double float KLoSS <nospam.klossik@alchemy.com.pl> - 2019-06-19 21:51 +0200
                    Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-25 21:53 +0200
                      Re: Porównywanie liczb, double float "J.F." <jfox_xnospamx@poczta.onet.pl> - 2019-06-26 06:38 +0200
                  Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-25 21:51 +0200
                Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-25 21:48 +0200
                  Re: Porównywanie liczb, double float "J.F." <jfox_xnospamx@poczta.onet.pl> - 2019-06-26 06:10 +0200
          Re: Porównywanie liczb, double float "Pszemol" <Pszemol@PolBox.com> - 2019-06-19 19:52 -0500
            Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-25 21:58 +0200
      Re: Porównywanie liczb, double float Piotr Wyderski <peter.pan@neverland.mil> - 2019-06-17 09:39 +0200
        Re: Porównywanie liczb, double float Mateusz Viste <mateusz@nie.pamietam> - 2019-06-17 07:53 +0000
          Re: Porównywanie liczb, double float Piotr Wyderski <peter.pan@neverland.mil> - 2019-06-17 12:59 +0200
            Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-19 08:23 +0200
          Re: Porównywanie liczb, double float "J.F." <jfox_xnospamx@poczta.onet.pl> - 2019-06-17 16:05 +0200
          Re: Porównywanie liczb, double float "Grzegorz Niemirowski" <grzegorz@grzegorz.net> - 2019-06-17 16:25 +0200
            Re: Porównywanie liczb, double float Piotr Wyderski <peter.pan@neverland.mil> - 2019-06-18 01:33 +0200
              Re: Porównywanie liczb, double float Mateusz Viste <mateusz@nie.pamietam> - 2019-06-18 06:32 +0000
                Re: Porównywanie liczb, double float Piotr Wyderski <peter.pan@neverland.mil> - 2019-06-18 12:04 +0200
                  Re: Porównywanie liczb, double float Mateusz Viste <mateusz@nie.pamietam> - 2019-06-18 12:30 +0000
                    Re: Porównywanie liczb, double float Piotr Wyderski <peter.pan@neverland.mil> - 2019-06-18 15:45 +0200
                      Re: Porównywanie liczb, double float queequeg@trust.no1 (Queequeg) - 2019-06-18 14:38 +0000
                        Re: Porównywanie liczb, double float Piotr Wyderski <peter.pan@neverland.mil> - 2019-06-19 09:04 +0200
                      Re: Porównywanie liczb, double float "J.F." <jfox_xnospamx@poczta.onet.pl> - 2019-06-18 16:52 +0200
                      Re: Porównywanie liczb, double float Mateusz Viste <mateusz@nie.pamietam> - 2019-06-18 15:20 +0000
                        Re: Porównywanie liczb, double float Roman Tyczka <noemail@because.no> - 2019-06-18 17:54 +0200
                          Re: Porównywanie liczb, double float fir <profesor.fir@gmail.com> - 2019-07-22 08:03 -0700
                        Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-25 21:25 +0200
                          Re: Porównywanie liczb, double float "J.F." <jfox_xnospamx@poczta.onet.pl> - 2019-06-26 06:21 +0200
                            Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-07-02 22:56 +0200
                              Re: Porównywanie liczb, double float "J.F." <jfox_xnospamx@poczta.onet.pl> - 2019-07-03 00:42 +0200
                                Re: Porównywanie liczb, double float fir <profesor.fir@gmail.com> - 2019-07-22 12:56 -0700
                    Re: Porównywanie liczb, double float Marek <fake@fakeemail.com> - 2019-06-18 22:10 +0200
                    Re: Porównywanie liczb, double float fir <profesor.fir@gmail.com> - 2019-07-22 01:16 -0700
                Re: Porównywanie liczb, double float "J.F." <jfox_xnospamx@poczta.onet.pl> - 2019-06-18 12:11 +0200
                  Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-19 08:48 +0200
                Re: Porównywanie liczb, double float fir <profesor.fir@gmail.com> - 2019-07-22 00:47 -0700
            Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-19 08:43 +0200
          Re: Porównywanie liczb, double float fir <profesor.fir@gmail.com> - 2019-07-22 00:37 -0700
        Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-19 08:19 +0200
    Re: Porównywanie liczb, double float "J.F." <jfox_xnospamx@poczta.onet.pl> - 2019-06-12 14:44 +0200
      Re: Porównywanie liczb, double float "Pszemol" <Pszemol@PolBox.com> - 2019-06-13 08:39 -0500
      Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-16 21:19 +0200
        Re: Porównywanie liczb, double float "J.F." <jfox_xnospamx@poczta.onet.pl> - 2019-06-17 16:20 +0200
          Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-19 08:37 +0200
            Re: Porównywanie liczb, double float "J.F." <jfox_xnospamx@poczta.onet.pl> - 2019-06-19 11:35 +0200
              Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-25 21:37 +0200
                Re: Porównywanie liczb, double float "J.F." <jfox_xnospamx@poczta.onet.pl> - 2019-06-26 06:17 +0200
    Re: Porównywanie liczb, double float Zbych <abuse@onet.pl> - 2019-06-12 14:48 +0200
      Re: Porównywanie liczb, double float "Irek.N." <tajny@jakis.taki.jest> - 2019-06-12 14:56 +0200
    Re: Porównywanie liczb, double float bartekltg <bartekltg@gmail.com> - 2019-06-12 06:07 -0700
      Re: Porównywanie liczb, double float "Pszemol" <Pszemol@PolBox.com> - 2019-06-13 08:43 -0500
      Re: Porównywanie liczb, double float bartekltg <bartekltg@gmail.com> - 2019-06-13 14:25 -0700
        Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-16 21:50 +0200
    Re: Porównywanie liczb, double float JDX <jdx@onet.pl> - 2019-06-12 15:21 +0200
      Re: Porównywanie liczb, double float "Pszemol" <Pszemol@PolBox.com> - 2019-06-13 08:24 -0500
    Re: Porównywanie liczb, double float Szyk Cech <szykcech@spoko.pl> - 2019-06-12 16:52 +0200
      Re: Porównywanie liczb, double float "J.F." <jfox_xnospamx@poczta.onet.pl> - 2019-06-12 17:27 +0200
        Re: Porównywanie liczb, double float stary grzyb <starygrzyb@onet.pl> - 2019-06-12 18:17 +0200
        Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-16 21:21 +0200
          Re: Porównywanie liczb, double float "J.F." <jfox_xnospamx@poczta.onet.pl> - 2019-06-17 16:15 +0200
            Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-19 08:34 +0200
        Re: Porównywanie liczb, double float Szyk Cech <szykcech@spoko.pl> - 2019-06-16 22:10 +0200
        Re: Porównywanie liczb, double float Piotrne <piotrne@poczta.onet.pl> - 2019-06-20 14:16 +0200
          Re: Porównywanie liczb, double float Mateusz Viste <mateusz@nie.pamietam> - 2019-06-20 12:38 +0000
            Re: Porównywanie liczb, double float Piotrne <piotrne@poczta.onet.pl> - 2019-06-22 13:36 +0200
            Re: Porównywanie liczb, double float "J.F." <jfox_xnospamx@poczta.onet.pl> - 2019-06-23 14:57 +0200
              Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-25 22:09 +0200
                Re: Porównywanie liczb, double float "J.F." <jfox_xnospamx@poczta.onet.pl> - 2019-06-26 06:11 +0200
          Re: Porównywanie liczb, double float Janusz <janusz_kk@o2.pl> - 2019-06-20 20:39 +0200
            Re: Porównywanie liczb, double float Piotrne <piotrne@poczta.onet.pl> - 2019-06-22 14:47 +0200
              Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-25 22:07 +0200
          Re: Porównywanie liczb, double float AK <nobody@nowhere.net> - 2019-06-25 22:03 +0200
      Re: Porównywanie liczb, double float "Pszemol" <Pszemol@PolBox.com> - 2019-06-13 08:35 -0500
        Re: Porównywanie liczb, double float fir <profesor.fir@gmail.com> - 2019-07-22 00:17 -0700
    Re: Porównywanie liczb, double float Dariusz Dorochowicz <_dadoro_@wp.com> - 2019-06-13 17:28 +0200

Page 1 of 6  [1] 2 3 4 5 6  Next page →


#32579 — Porównywanie liczb, double float

From"Pszemol" <Pszemol@PolBox.com>
Date2019-06-12 07:17 -0500
SubjectPorównywanie liczb, double float
Message-ID<qdqqh6$n2f$1@dont-email.me>
Witam, spędziłem wczoraj sporo godzin w biurze na debugowaniu
kodu napisanego przez naszego kontraktora i w końcu znalazłem buga.
Przyczyną błędu była różnica odejmowania dwu liczb całkowitych
wynosząca 15.1234e-15 :-)

Ale może więcej szczegółów podam:

Pisząc w Visual Basic 6 gostek porównywał rezultat konwersji CDbl()
stringu od którego odjął stałą numeryczną 1.8 do lokalnej zmiennej double.

Czyli mamy kod:

Sub AlaMaKota(nieważne tutaj argumenty procedury)
Dim len as Double

len = CDbl("tekst wydłubany z RS232") - 1.8

If len <> CDbl("inny tekst wydłubany z RS232) Then
    zgłoś błąd i kapitulujemy... kaput!
Else
    lecimy z testami talej, wsio w pariadkie
Endif.

Pierwszy tekst z RS232 był 32.8, drugi 31. 32.8-1.8 = 31.
Powinno być wszystko ok, bo w matematyce 31 równe jest 31 :-)
Wynik porównania VB6 był 31 nie jest równe 31 i program
kapitulował...

Po zamienieniu testu "if double <> double then" na test
"if double - double < -0.001 Or double - double > 0.001 then"
program zaczął pracować normalnie.

Przyczyną błędu była różnica odejmowania wynosząca 15.1234e-15

Dlaczego konwersja CDbl stringu 31 lub 32.8 dodaje jakieś
śmieci do zmiennej double float na 15 miejscu po przecinku??
A może odejmowanie stałej 1.8 wprowadza ten błąd?

Czy to jest normalne zachowanie się VB6?

Czy inne Visuale jak VC++ lub VC# też tak mają? 

[toc] | [next] | [standalone]


#32580

FromMateusz Viste <mateusz@nie.pamietam>
Date2019-06-12 12:29 +0000
Message-ID<5d00f035$0$15194$426a74cc@news.free.fr>
In reply to#32579
On Wed, 12 Jun 2019 07:17:45 -0500, Pszemol wrote:
> Pisząc w Visual Basic 6 gostek porównywał rezultat konwersji CDbl()
> stringu od którego odjął stałą numeryczną 1.8 do lokalnej zmiennej
> double.

Prawdziwi programiści nie używają liczb zmiennoprzecinkowych.

Obowiązkowa lektura na wieczór:
http://perso.ens-lyon.fr/jean-michel.muller/goldberg.pdf

Mateusz

[toc] | [prev] | [next] | [standalone]


#32588

Fromqueequeg@trust.no1 (Queequeg)
Date2019-06-12 14:53 +0000
Message-ID<294f23bf-6718-4768-adfb-2bddb1f33a19@trust.no1>
In reply to#32580
In pl.misc.elektronika Mateusz Viste <mateusz@nie.pamietam> wrote:

> Prawdziwi programiści nie używają liczb zmiennoprzecinkowych.

Nie szedłbym tak daleko. Oczywiście używają ale wiedzą też, jakie są ich 
ograniczenia i jak je porównywać.

-- 
Eksperymentalnie: http://facebook.com/groups/pl.misc.elektronika

[toc] | [prev] | [next] | [standalone]


#32589

FromCezary Grądys <czarekgr@wa.onet.pl>
Date2019-06-12 16:54 +0200
Message-ID<5d011217$0$17348$65785112@news.neostrada.pl>
In reply to#32580
W dniu 12.06.2019 o 14:29, Mateusz Viste pisze:

> 
> Prawdziwi programiści nie używają liczb zmiennoprzecinkowych.
> 
> Obowiązkowa lektura na wieczór:
> http://perso.ens-lyon.fr/jean-michel.muller/goldberg.pdf
> 

Nie ma co przesadzać, liczby zmiennoprzecinkowe po to powstały, żeby je
używać. Trzeba tylko porównywać je zakładając pewną dopuszczalną
tolerancję.


-- 
Cezary Grądys
czarekgr@wa.onet.pl

[toc] | [prev] | [next] | [standalone]


#32607

FromAK <nobody@nowhere.net>
Date2019-06-16 21:40 +0200
Message-ID<qe65vo$18po$1@gioia.aioe.org>
In reply to#32589
On 2019-06-12 16:54, Cezary Grądys wrote:
> W dniu 12.06.2019 o 14:29, Mateusz Viste pisze:
> 
>>
>> Prawdziwi programiści nie używają liczb zmiennoprzecinkowych.
>>
>> Obowiązkowa lektura na wieczór:
>> http://perso.ens-lyon.fr/jean-michel.muller/goldberg.pdf
>>
> 
> Nie ma co przesadzać, liczby zmiennoprzecinkowe po to powstały, żeby je
> używać. Trzeba tylko porównywać je zakładając pewną dopuszczalną
> tolerancję.

No dooobra.
Zamieszcze tu po raz 473 w ciagu 20 lat podstawową formułkę
(Ba! KANON!), bo przy takiej wiedzy "mlodego pokolenia" znow
zaczną nam przychodzic ponaglenia o pilną zapłatę 0.00PLN.

a == b  ->   fabs(a - b) <= EPS
a != b  ->   fabs(a - b) > EPS
a < b   ->   (a - b) < -EPS
a > b   ->   (a - b) > EPS
a <= b  ->   (a - b) <= EPS
a >= b  ->   (a - b) >= -EPS

PS: Oczywiscie EPS moze miec rozna nature i wartosci zaleznie np.
od domeny (numeryka, finanse itp). Np. Moze byc bezwzgledne, ale
czesto bywa wzgledne, a w numeryce to juz w ogole...
Np. w optymalizacji moze byc dynamiczne (np zalezne nie tylko
od wartosci ale i innych cech funkcji, np gradientu) i sztuka
sama w sobie jest je dobierac/szacowac np w slabo zbieznych algorytmach
czy gdy np. funcja jest baaardzo stroma. No ale to juz zupelnie inna
"para kaloszy".

PS0: Oczywiscie w niektorych "higienicznych" przypadkach (np. szukanie
wartosci maksymalnej) dopuszczalne jest zwykłę >, ale to nie
łamie/przeczy w/w regułom.

AK

[toc] | [prev] | [next] | [standalone]


#32615

Frombartekltg <bartekltg@gmail.com>
Date2019-06-16 18:44 -0700
Message-ID<7d334ae2-808a-4653-b940-0711b58d2046@googlegroups.com>
In reply to#32607
On Sunday, June 16, 2019 at 9:40:44 PM UTC+2, AK wrote:
> On 2019-06-12 16:54, Cezary Grądys wrote:
> > W dniu 12.06.2019 o 14:29, Mateusz Viste pisze:
> > 
> >>
> >> Prawdziwi programiści nie używają liczb zmiennoprzecinkowych.
> >>
> >> Obowiązkowa lektura na wieczór:
> >> http://perso.ens-lyon.fr/jean-michel.muller/goldberg.pdf
> >>
> > 
> > Nie ma co przesadzać, liczby zmiennoprzecinkowe po to powstały, żeby je
> > używać. Trzeba tylko porównywać je zakładając pewną dopuszczalną
> > tolerancję.
> 
> No dooobra.
> Zamieszcze tu po raz 473 w ciagu 20 lat podstawową formułkę
> (Ba! KANON!), bo przy takiej wiedzy "mlodego pokolenia" znow
> zaczną nam przychodzic ponaglenia o pilną zapłatę 0.00PLN.
> 
> a == b  ->   fabs(a - b) <= EPS
> a != b  ->   fabs(a - b) > EPS

Zgoda.

> a < b   ->   (a - b) < -EPS
> a > b   ->   (a - b) > EPS
> a <= b  ->   (a - b) <= EPS
> a >= b  ->   (a - b) >= -EPS

A to po co? 
Jeśli chemy rozróżnić trzy przypadki,
'wystarczająco równe', większe, mnijesze,
to OK. Ale bardzo często nierórności tego typu
testuje się do rozdielenia mniejszych i większych,
wtedy to ma mały sens.

Np mam algorytm, sprawdzam oszacowanie na błąd:

while (est_error > tol )...

mieszanie tu eps nic jakościoweo nie zmieni. 

pzdr
bartekltg

[toc] | [prev] | [next] | [standalone]


#32640

FromAK <nobody@nowhere.net>
Date2019-06-19 08:15 +0200
Message-ID<qecju2$1jvs$1@gioia.aioe.org>
In reply to#32615
On 2019-06-17 03:44, bartekltg wrote:
> On Sunday, June 16, 2019 at 9:40:44 PM UTC+2, AK wrote:
>> On 2019-06-12 16:54, Cezary Grądys wrote:
>>> W dniu 12.06.2019 o 14:29, Mateusz Viste pisze:
>>>
>>>>
>>>> Prawdziwi programiści nie używają liczb zmiennoprzecinkowych.
>>>>
>>>> Obowiązkowa lektura na wieczór:
>>>> http://perso.ens-lyon.fr/jean-michel.muller/goldberg.pdf
>>>>
>>>
>>> Nie ma co przesadzać, liczby zmiennoprzecinkowe po to powstały, żeby je
>>> używać. Trzeba tylko porównywać je zakładając pewną dopuszczalną
>>> tolerancję.
>>
>> No dooobra.
>> Zamieszcze tu po raz 473 w ciagu 20 lat podstawową formułkę
>> (Ba! KANON!), bo przy takiej wiedzy "mlodego pokolenia" znow
>> zaczną nam przychodzic ponaglenia o pilną zapłatę 0.00PLN.
>>
>> a == b  ->   fabs(a - b) <= EPS
>> a != b  ->   fabs(a - b) > EPS
> 
> Zgoda.
> 
>> a < b   ->   (a - b) < -EPS
>> a > b   ->   (a - b) > EPS
>> a <= b  ->   (a - b) <= EPS
>> a >= b  ->   (a - b) >= -EPS
> 
> A to po co?

Przez symetrię. Tak samo wazne jak powyzsze.

> Ale bardzo często nierórności tego typu
> testuje się do rozdielenia mniejszych i większych,
> wtedy to ma mały sens.

Czytales moj post do konca.

AK

[toc] | [prev] | [next] | [standalone]


#32619

FromPiotr Wyderski <peter.pan@neverland.mil>
Date2019-06-17 09:43 +0200
Message-ID<qe7gad$t3h$1@gioia.aioe.org>
In reply to#32607
AK wrote:

> No dooobra.
> Zamieszcze tu po raz 473 w ciagu 20 lat podstawową formułkę
> (Ba! KANON!), bo przy takiej wiedzy "mlodego pokolenia" znow
> zaczną nam przychodzic ponaglenia o pilną zapłatę 0.00PLN.

[ciach formułki]

I nie mówcie mi, że na macie NaNa, bo w każdej chwili mieć możecie! 
(sprawdzić, czy nie ksiądz).

	Pozdrawiam, Piotr

[toc] | [prev] | [next] | [standalone]


#32643

FromAK <nobody@nowhere.net>
Date2019-06-19 08:20 +0200
Message-ID<7169af4f-76d5-b403-776f-699191f392b6@nowhere.net>
In reply to#32619
On 2019-06-17 09:43, Piotr Wyderski wrote:
> 
> I nie mówcie mi, że na macie NaNa, bo w każdej chwili mieć możecie! 

Raaaacja :)

AK

[toc] | [prev] | [next] | [standalone]


#32652

FromAK <nobody@nowhere.net>
Date2019-06-19 08:59 +0200
Message-ID<qecmgd$1uq8$1@gioia.aioe.org>
In reply to#32619
On 2019-06-17 09:43, Piotr Wyderski wrote:
> AK wrote:
> 
> I nie mówcie mi, że na macie NaNa, bo w każdej chwili mieć możecie! 

Raaaacja :)

AK

[toc] | [prev] | [next] | [standalone]


#32625

From"J.F." <jfox_xnospamx@poczta.onet.pl>
Date2019-06-17 16:14 +0200
Message-ID<5d07a0c6$0$525$65785112@news.neostrada.pl>
In reply to#32607
Użytkownik "AK"  napisał w wiadomości grup 
dyskusyjnych:qe65vo$18po$1@gioia.aioe.org...
On 2019-06-12 16:54, Cezary Grądys wrote:
>No dooobra.
>Zamieszcze tu po raz 473 w ciagu 20 lat podstawową formułkę
>(Ba! KANON!), bo przy takiej wiedzy "mlodego pokolenia" znow
>zaczną nam przychodzic ponaglenia o pilną zapłatę 0.00PLN.

>a == b  ->   fabs(a - b) <= EPS
>a != b  ->   fabs(a - b) > EPS

Jak najbardziej.

>a < b   ->   (a - b) < -EPS
>a > b   ->   (a - b) > EPS

No, tu bym sie zastanowil.
Bo ryzykujesz, ze liczbe mniejsza zakwalifikujesz jako wieksza.
Z mozliwymi skutkami w przebiegu programu, bo nagle sie okaze ze np 
pierwiastek z liczby ujemnej liczysz, a przeciez sprawdziles, ze 
powinna byc dodatnia ...

>a <= b  ->   (a - b) <= EPS
>a >= b  ->   (a - b) >= -EPS

To juz chyba nie tak bardzo istotne, biorac pod uwage, ze i tak 
dorzuczamy EPS.

>PS: Oczywiscie EPS moze miec rozna nature i wartosci zaleznie np.
>od domeny (numeryka, finanse itp). Np. Moze byc bezwzgledne, ale
>czesto bywa wzgledne, a w numeryce to juz w ogole...

No wlasnie - moze zalezec od wartosci liczb.

J.

[toc] | [prev] | [next] | [standalone]


#32647

FromAK <nobody@nowhere.net>
Date2019-06-19 08:32 +0200
Message-ID<qeckt3$1p3l$1@gioia.aioe.org>
In reply to#32625
On 2019-06-17 16:14, J.F. wrote:
> Użytkownik "AK"  napisał w wiadomości grup 
> dyskusyjnych:qe65vo$18po$1@gioia.aioe.org...
> On 2019-06-12 16:54, Cezary Grądys wrote:
>> No dooobra.
>> Zamieszcze tu po raz 473 w ciagu 20 lat podstawową formułkę
>> (Ba! KANON!), bo przy takiej wiedzy "mlodego pokolenia" znow
>> zaczną nam przychodzic ponaglenia o pilną zapłatę 0.00PLN.
> 
>> a == b  ->   fabs(a - b) <= EPS
>> a != b  ->   fabs(a - b) > EPS
> 
> Jak najbardziej.
> 
>> a < b   ->   (a - b) < -EPS
>> a > b   ->   (a - b) > EPS
> 
> No, tu bym sie zastanowil.

Sie nie zasanawiaj, tylko uzywaj.
Z pozno na zastanawianie.

> Bo ryzykujesz, ze liczbe mniejsza zakwalifikujesz jako wieksza.
[...]

Kolejny co nie czytal posta do konca.. Eh..

>> a <= b  ->   (a - b) <= EPS
>> a >= b  ->   (a - b) >= -EPS
> 
> To juz chyba nie tak bardzo istotne, biorac pod uwage, ze i tak 
> dorzuczamy EPS.

TAK SAMO stotne jak i powyzsze.
Wszystkie w/w sa ROWNIE istotne.

>> PS: Oczywiscie EPS moze miec rozna nature i wartosci zaleznie np.
>> od domeny (numeryka, finanse itp). Np. Moze byc bezwzgledne, ale
>> czesto bywa wzgledne, a w numeryce to juz w ogole...
> 
> No wlasnie - moze zalezec od wartosci liczb.

I w optymalizacji np. bardzo czesto sa.
No ale co z tego?

AK

[toc] | [prev] | [next] | [standalone]


#32718

FromDMR <mezzogm@gmail.com>
Date2019-07-11 22:27 -0700
Message-ID<5b09d1e0-1ed9-4a3c-851e-29cbf826cb3a@googlegroups.com>
In reply to#32607
> Zamieszcze tu po raz 473 w ciagu 20 lat podstawową formułkę
> (Ba! KANON!)


To ja poprosiłbym o jakiś patent na odporne na zaokrąglenia rozdzielenie części całkowitej i ułamkowej w zmiennej typu double.



> ponaglenia o pilną zapłatę 0.00PLN


No właśnie.
Przykładowo, muszę zrobić: 12345.6789 zł -> 12345 zł 68 gr

Wiadomo:

double suma, f;
int zlote, grosze;

   ...

   suma += 0.005;

   zlote = (int)suma;
   f = suma - zlote;
   grosze = (int)(f * 100.0);

Problemy mogą pojawić w przypadku wartości praktycznie równych wartościom całkowitym.
Gdyby na skutek jakichś zaokrągleń wartość f okazała się ujemna, to nie ma problemu - (int) i tak "dociągnie" ją do zera.

Gorzej, gdyby np. suma = 1234.9999999999999997, za to teoretycznie f = 0.9999999999999997 za sprawą zabłąkanego bitu na końcu przeskoczyła na f = 1.0000000000000001.
Wtedy wyjdzie 1234 zł 100 gr...

Chyba, że nie potrzebnie się martwię.
Testowałem to wielokrotnie dla miliardów złośliwie wygenerowanych danych "z pogranicza" - ani razu się nie wywaliła.

No, ale... :-)

[toc] | [prev] | [next] | [standalone]


#32719

FromAK <nobody@nowhere.net>
Date2019-07-13 09:21 +0200
Message-ID<qgc0p6$1jf$1@gioia.aioe.org>
In reply to#32718
On 2019-07-12 07:27, DMR wrote:
>> Zamieszcze tu po raz 473 w ciagu 20 lat podstawową formułkę
>> (Ba! KANON!)
> 
> To ja poprosiłbym o jakiś patent na odporne na zaokrąglenia rozdzielenie części całkowitej i ułamkowej w zmiennej typu double.
> 
>> ponaglenia o pilną zapłatę 0.00PLN
> 
> No właśnie.
> Przykładowo, muszę zrobić: 12345.6789 zł -> 12345 zł 68 gr
> 
> Wiadomo:
> 
> double suma, f;
> int zlote, grosze;
> 
>     ...
> 
>     suma += 0.005;
> 
>     zlote = (int)suma;
>     f = suma - zlote;
>     grosze = (int)(f * 100.0);
> 
> Problemy mogą pojawić w przypadku wartości praktycznie równych wartościom całkowitym.
> Gdyby na skutek jakichś zaokrągleń wartość f okazała się ujemna, to nie ma problemu - (int) i tak "dociągnie" ją do zera.
> 
> Gorzej, gdyby np. suma = 1234.9999999999999997, za to teoretycznie f = 0.9999999999999997 za sprawą zabłąkanego bitu na końcu przeskoczyła na f = 1.0000000000000001.
> Wtedy wyjdzie 1234 zł 100 gr...
> 
> Chyba, że nie potrzebnie się martwię.
> Testowałem to wielokrotnie dla miliardów złośliwie wygenerowanych danych "z pogranicza" - ani razu się nie wywaliła.
> 
> No, ale... :-)

Proszę bardzo.
To jest drugi KANON (zaokraglanie do int-a):

W Pythonie tak:
     grosze, zlote = math.modf(amount)
     zlote  = int(abs(zlote) + 0.5)
     grosze = int(abs(grosze) * 100.0 + 0.5)

W C/C++ cuś w rodzaju:
     double zlote_fp;
     double grosze_fp = modf(amount, &zlote_fp);
     long zlote  = long(fabs(zlote_fp) + 0.5);
     int  grosze = int(fabs(grosze_fp) * 100.0 + 0.5);

PS: Wazne jest to + 0.5. Jeszcze z Algolu pamietam:)
integer := ENTER(float + 0.5)

AK

[toc] | [prev] | [next] | [standalone]


#32720

FromDMR <mezzogm@gmail.com>
Date2019-07-14 01:16 -0700
Message-ID<2656a77d-a2c2-4883-8987-b57162c8c5d2@googlegroups.com>
In reply to#32719
> modf


Funkcje biblioteczne dobre na wszystko! :-)
Tylko, one też muszą być jakoś zaimplementowane.

Tu kolega miał podobny dylemat: https://stackoverflow.com/questions/2637714/
Pytanie - czy na pewno jest to to stabilne numerycznie?
Tzn. czy nawet jakieś wyjątkowo perfidne błędy zaokrągleń przy odejmowaniu nie są w stanie zniweczyć warunku: 0 < floatPart < 1?
(w moim przypadku: floatPart < 1)

[toc] | [prev] | [next] | [standalone]


#32721

FromAK <nobody@nowhere.net>
Date2019-07-16 00:05 +0200
Message-ID<qgitbg$nl3$1@gioia.aioe.org>
In reply to#32720
On 2019-07-14 10:16, DMR wrote:
>> modf
> 
> 
> Funkcje biblioteczne dobre na wszystko! :-)
> Tylko, one też muszą być jakoś zaimplementowane.

np. Python:
w_groszach = int(abs(amount) * 100.0 + 0.5)
zlote  = w_groszach // 100
grosze = w_groszach % 100

AK

[toc] | [prev] | [next] | [standalone]


#32727

Fromfir <profesor.fir@gmail.com>
Date2019-07-22 08:24 -0700
Message-ID<0af226e9-7a1a-4af3-ba0c-bbc2cbd865f8@googlegroups.com>
In reply to#32718
W dniu piątek, 12 lipca 2019 07:27:56 UTC+2 użytkownik DMR napisał:
> > Zamieszcze tu po raz 473 w ciagu 20 lat podstawową formułkę
> > (Ba! KANON!)
> 
> 
> To ja poprosiłbym o jakiś patent na odporne na zaokrąglenia rozdzielenie części całkowitej i ułamkowej w zmiennej typu double.
> 
> 
> 
> > ponaglenia o pilną zapłatę 0.00PLN
> 
> 
> No właśnie.
> Przykładowo, muszę zrobić: 12345.6789 zł -> 12345 zł 68 gr
> 
> Wiadomo:
> 
> double suma, f;
> int zlote, grosze;
> 
>    ...
> 
>    suma += 0.005;
> 
>    zlote = (int)suma;
>    f = suma - zlote;
>    grosze = (int)(f * 100.0);
> 
> Problemy mogą pojawić w przypadku wartości praktycznie równych wartościom całkowitym.
> Gdyby na skutek jakichś zaokrągleń wartość f okazała się ujemna, to nie ma problemu - (int) i tak "dociągnie" ją do zera.
> 
> Gorzej, gdyby np. suma = 1234.9999999999999997, za to teoretycznie f = 0.9999999999999997 za sprawą zabłąkanego bitu na końcu przeskoczyła na f = 1.0000000000000001.
> Wtedy wyjdzie 1234 zł 100 gr...
> 
> Chyba, że nie potrzebnie się martwię.
> Testowałem to wielokrotnie dla miliardów złośliwie wygenerowanych danych "z pogranicza" - ani razu się nie wywaliła.
> 
> No, ale... :-)

chyba cos kolega piepszy

   zlote = (int)suma;
   f = suma - zlote;
   grosze = (int)(f * 100.0);

nie chce mi sie nad tym za dlugo zastanawiac ale na oko to bedzie dzialac
zawsze poprawnie (zakladam ze wartosc suma jest dodatnia i ze chodzi o zaokraglenie w dol, nie mam pojecia jakie reguly zaokraglania pieniedzy panuja w bankach)

[toc] | [prev] | [next] | [standalone]


#32729

FromDMR <mezzogm@gmail.com>
Date2019-07-24 10:19 -0700
Message-ID<13426c24-05c6-4392-bcdf-0481bd1681d7@googlegroups.com>
In reply to#32727
Chyba coś kolega "piepszy".

Nie chce mi się tego czytać, ale na oko właśnie tak jest.

[toc] | [prev] | [next] | [standalone]


#32732

FromAK <nobody@nowhere.net>
Date2019-07-24 21:13 +0200
Message-ID<qhaal9$1ek5$1@gioia.aioe.org>
In reply to#32729
On 2019-07-24 19:19, DMR wrote:
> Chyba coś kolega "piepszy".
> 
> Nie chce mi się tego czytać, ale na oko właśnie tak jest.

To po prostu upierdliwy troll.

AK

[toc] | [prev] | [next] | [standalone]


#32735

Fromfir <profesor.fir@gmail.com>
Date2019-07-24 13:39 -0700
Message-ID<f3dae552-e313-4e38-a801-4d630d4e5ed3@googlegroups.com>
In reply to#32729
W dniu środa, 24 lipca 2019 19:19:36 UTC+2 użytkownik DMR napisał:
> Chyba coś kolega "piepszy".
> 
> Nie chce mi się tego czytać, ale na oko właśnie tak jest.

to swietnie bo na wykłocanie sie z matolkami nie mam czasu

[toc] | [prev] | [next] | [standalone]


Page 1 of 6  [1] 2 3 4 5 6  Next page →

Back to top | Article view | pl.comp.programming


csiph-web