Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.programming > #32579 > unrolled thread
| Started by | "Pszemol" <Pszemol@PolBox.com> |
|---|---|
| First post | 2019-06-12 07:17 -0500 |
| Last post | 2019-06-13 17:28 +0200 |
| Articles | 20 on this page of 120 — 24 participants |
Back to article view | Back to pl.comp.programming
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 →
| From | "Pszemol" <Pszemol@PolBox.com> |
|---|---|
| Date | 2019-06-12 07:17 -0500 |
| Subject | Poró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]
| From | Mateusz Viste <mateusz@nie.pamietam> |
|---|---|
| Date | 2019-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]
| From | queequeg@trust.no1 (Queequeg) |
|---|---|
| Date | 2019-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]
| From | Cezary Grądys <czarekgr@wa.onet.pl> |
|---|---|
| Date | 2019-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]
| From | AK <nobody@nowhere.net> |
|---|---|
| Date | 2019-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]
| From | bartekltg <bartekltg@gmail.com> |
|---|---|
| Date | 2019-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]
| From | AK <nobody@nowhere.net> |
|---|---|
| Date | 2019-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]
| From | Piotr Wyderski <peter.pan@neverland.mil> |
|---|---|
| Date | 2019-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]
| From | AK <nobody@nowhere.net> |
|---|---|
| Date | 2019-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]
| From | AK <nobody@nowhere.net> |
|---|---|
| Date | 2019-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]
| From | "J.F." <jfox_xnospamx@poczta.onet.pl> |
|---|---|
| Date | 2019-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]
| From | AK <nobody@nowhere.net> |
|---|---|
| Date | 2019-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]
| From | DMR <mezzogm@gmail.com> |
|---|---|
| Date | 2019-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]
| From | AK <nobody@nowhere.net> |
|---|---|
| Date | 2019-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]
| From | DMR <mezzogm@gmail.com> |
|---|---|
| Date | 2019-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]
| From | AK <nobody@nowhere.net> |
|---|---|
| Date | 2019-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]
| From | fir <profesor.fir@gmail.com> |
|---|---|
| Date | 2019-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]
| From | DMR <mezzogm@gmail.com> |
|---|---|
| Date | 2019-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]
| From | AK <nobody@nowhere.net> |
|---|---|
| Date | 2019-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]
| From | fir <profesor.fir@gmail.com> |
|---|---|
| Date | 2019-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