eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Porównywanie liczb, double float
Ilość wypowiedzi w tym wątku: 120

  • 101. Data: 2019-06-26 06:21:16
    Temat: Re: Porównywanie liczb, double float
    Od: "J.F." <j...@p...onet.pl>

    Dnia Tue, 25 Jun 2019 21:25:30 +0200, AK napisał(a):
    > On 2019-06-18 17:20, Mateusz Viste wrote:
    >> Wszystko zaczęło się od twojego stwierdzenia, że do skorzystania z float
    >> trzeba skończyć "półroczny zaawansowany wykład z analizy numerycznej".
    >> Otóż staram się> wyjaśnić że nie, bo do tego wystarczy być średnio rozgarniętym
    >> człowiekiem i poświęcić jeden wieczór na zrozumienie (na podstawie ogólno-
    >> dostępnej dokumentacji) czym jest float, jak działa i dlaczego to nie
    >> jest żadne uniwersalne narzędzie. No powiedzmy dwa wieczory, jeśli
    >> wliczyć w to zabawę z kompilatorem i sprawdzenia jak taki float reaguje w
    >> praktyce i w jaki sposób jest przechowywany w pamięci. Ok, niech będą 3
    >> wieczory, żeby jeszcze zerknąć do kilku projektów OSS jak oni korzystają
    >> (lub nie) z float, i dlaczego.
    >
    > Powyzsze podejscie _kompletnie_ dyskwalifikuje Cie jako uzytkownika
    > liczb float. Ba! Dyskwalifikuje Cie jako programistę.
    > (niewazne czy samouka czy nie).
    > PS: Zapsz si ejednak na ten kurs numeryki. Moze jeszcze gdzies ucza o
    > float...

    No ale przeciez nie chcesz wiedziec jak floaty sa zapisane :-P

    To po takim kursie bediesz mial metlik - pelno ostrzezen o mozliwych
    bledach i zero rozwiazan :-)

    J.


  • 102. Data: 2019-06-26 06:38:40
    Temat: Re: Porównywanie liczb, double float
    Od: "J.F." <j...@p...onet.pl>

    Dnia Tue, 25 Jun 2019 21:53:54 +0200, AK napisał(a):

    > On 2019-06-19 21:51, KLoSS wrote:
    >> Nowi jak nowi, ale żeby wojsko... I niestety były ofiary.
    >>
    >> http://www-users.math.umn.edu/~arnold//disasters/pat
    riot.html
    >
    > O ja pie.. To niemozliwe (urban legend?).
    > Przecie to zakrawa na zwykłe nieuctwo :(


    urban legend mozliwe ... ale ...

    Z jednej strony nieuctwo, z drugiej - pewien problem, jak to zrobic
    dobrze.
    A wojsko (klient) pewnie nie zostawialo na 4 dni przed testami
    wlaczonego :-)


    J.


  • 103. Data: 2019-07-02 22:56:19
    Temat: Re: Porównywanie liczb, double float
    Od: AK <n...@n...net>

    On 2019-06-26 06:21, J.F. wrote:
    >> PS: Zapsz si ejednak na ten kurs numeryki. Moze jeszcze gdzies ucza o
    >> float...
    >
    > No ale przeciez nie chcesz wiedziec jak floaty sa zapisane :-P
    >
    > To po takim kursie bediesz mial metlik - pelno ostrzezen o mozliwych
    > bledach i zero rozwiazan :-)

    Hehe, no racja :)
    Tyle, ze w "moich czasach" nie uczyli o bebechach formatow fp (bo co
    maszyna to byl inny, ba! nawet bajt na CDC mial 9 bitow;), jeno wlasnie
    jak ich _dobrze_ uzywac przy takiej wielosci formatow.

    PS: Zeb nie bylo, Chwale IEEE754, ale glownie ze wzgledu na ulatwienie
    (ze wzgledu na ustandaryzowanie) dla tworcow koprocesorow i kompilatorow.
    Dla uzytkownikow/programistow "stare" zasady pozostaja wciaz w mocy.

    AK


  • 104. Data: 2019-07-03 00:42:53
    Temat: Re: Porównywanie liczb, double float
    Od: "J.F." <j...@p...onet.pl>

    Dnia Tue, 2 Jul 2019 22:56:19 +0200, AK napisał(a):
    > On 2019-06-26 06:21, J.F. wrote:
    >>> PS: Zapsz si ejednak na ten kurs numeryki. Moze jeszcze gdzies ucza o
    >>> float...
    >>
    >> No ale przeciez nie chcesz wiedziec jak floaty sa zapisane :-P
    >>
    >> To po takim kursie bediesz mial metlik - pelno ostrzezen o mozliwych
    >> bledach i zero rozwiazan :-)
    >
    > Hehe, no racja :)
    > Tyle, ze w "moich czasach" nie uczyli o bebechach formatow fp (bo co
    > maszyna to byl inny, ba! nawet bajt na CDC mial 9 bitow;), jeno wlasnie
    > jak ich _dobrze_ uzywac przy takiej wielosci formatow.
    >
    > PS: Zeb nie bylo, Chwale IEEE754, ale glownie ze wzgledu na ulatwienie
    > (ze wzgledu na ustandaryzowanie) dla tworcow koprocesorow i kompilatorow.
    > Dla uzytkownikow/programistow "stare" zasady pozostaja wciaz w mocy.

    IMO - powstal chyba tylko po to, zeby klienci nie narzekali, ze ten
    sam program (zrodlowy) wykonany na dwoch roznych komputerach daje
    rozny wynik (z powodu zaokraglen/obciec).

    Ale ma jedna zalete - z powodu przyjecia podstawy 2, srednia dwoch
    liczb jest zawsze pomiedzy nimi.
    Przy podstawie 10 lub 16 moze byc juz inaczej
    np 5.008+5.009 = 10.017 -> 1.002e1 .. /2 = 5.010

    J.


  • 105. Data: 2019-07-12 07:27:55
    Temat: Re: Porównywanie liczb, double float
    Od: DMR <m...@g...com>

    > 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... :-)


  • 106. Data: 2019-07-13 09:21:07
    Temat: Re: Porównywanie liczb, double float
    Od: AK <n...@n...net>

    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


  • 107. Data: 2019-07-14 10:16:33
    Temat: Re: Porównywanie liczb, double float
    Od: DMR <m...@g...com>

    > 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)


  • 108. Data: 2019-07-16 00:05:35
    Temat: Re: Porównywanie liczb, double float
    Od: AK <n...@n...net>

    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


  • 109. Data: 2019-07-22 09:17:47
    Temat: Re: Porównywanie liczb, double float
    Od: fir <p...@g...com>

    W dniu czwartek, 13 czerwca 2019 15:35:14 UTC+2 użytkownik Pszemol napisał:
    > "Szyk Cech" <s...@s...pl> wrote in message
    > news:Jk8ME.2$6r.0@fx19.fr7...
    > >> 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ą?
    > >
    > > Weź chłopie ić na studia (ja miałem to nawet na wieczorowych
    > > 20 lat temu) i się doucz! Zamiast zadawać głupie pytania.
    >
    > Ale kultury osobistej Cię tam nie nauczyli... szkoda.
    >
    > > Choć gdybyś dłubał w czymś innym niż VB to byś wiedział
    > > o problemie (w każdej książce do Asemblera czy C czy C++
    > > to powinno być).
    >
    > ha ha :-) No brawo.

    szyk ma duzo racji, na pewno gada madrzej niz kolega (przynajmniej w pewnym sensie)

    sęk w tym ze jest to problem
    podstawowy, cos jak programistyczne 2+2

    tkwienie w tym i spedzanie na tym za duzo czasu 1) skazuje czlowieka na bycie
    noobem duzo czasu pozatym ze ogolnie 2) skazuje czlowieka na bycie noobem

    sam swego czasu lubilem tkwic w takich noobich tematach ale pozniej oduczylem sie
    tego (przynajmniej w sporym stopniu)
    i uwazam to chyba za dosyc wazne oduczyc
    sie tego tkwienia w podstawach.. wiaże sie to tez z tym ze jak czlowiek ma troche
    praktyki zauwaza ze w praktyce zasiek pewnych problemow jest dosyc wąski

    a jesli ktos chce sie tego naprawde porzadnie nauczyc to info w necie jest,
    sam kiedys czytelem to

    http://www.website.masmforum.com/tutorials/fptute/

    co prawda dzis na x86/x64 kodu nie kompiluje sie na te instrukcje tylko na skalarne
    sse ale to wyzej tez mozna przeczytac bo sporo rzeczy (np sam format floata/double)
    jest analogiczne..


  • 110. Data: 2019-07-22 09:37:33
    Temat: Re: Porównywanie liczb, double float
    Od: fir <p...@g...com>

    W dniu poniedziałek, 17 czerwca 2019 09:53:43 UTC+2 użytkownik Mateusz Viste napisał:
    > On Mon, 17 Jun 2019 09:39:08 +0200, Piotr Wyderski wrote:
    > > Prawdziwi programiści nie używają liczb zmiennoprzecinkowych bezmyślnie.
    > > A żeby to móc robić "zmyślnie" mają co najmniej półroczny zaawansowany
    > > wykład z analizy numerycznej. Oczywiście zdarzają się i tacy, co byli za
    > > mądrzy na studia i użeranie się z profesorami-debilami, dzięki czemu
    > > m.in. Pszemol ma fun.
    >
    > Wszystko się zgadza, z tym że wniosek "był na studiach = wie co robi"
    > jest co najmniej nietrafiony. De facto studia - przynajmniej w sektorze
    > IT - to nic więcej jak strata czasu. Nie gwarantują one ani wiedzy, ani
    > pomyślunku, a zarówno to pierwsze jak i drugie można bez problemu nabyć
    > poza murami uczelni.
    >
    ogolnie jest to uproszczona i czesto falszywa wizja (prawdziwa w niektorych
    przypadkach ale w wielu nie)

    na przyklad ja gdy szedlem do pierwszej roboty w 2005 to mialem porownanie miedzy
    sobą (ktory nauczyl sie glownie c, troche asma i troche pascala/javy)
    samodzielnie vs kolesie ktoprzy byli w moim wieku ale byli z rok czy dwa lata po
    informatyce na politechnikach

    kwestia byla taka ze ci umieli wiecej
    (bo ja sudiowalem fizyke co mi zajelo 5 lat) i umieli przede wszystkim inne rzeczy
    (byli po wykladach z sieci, baz danych i kilku innych podobnych tematow)

    pozatym studia maja tez inne plucy, na przyklad mzoesz jak sadze porownac siebie i to
    co wiesz na zywo z tym co wiedza twoi kumple z roku przez to napewno uczysz sie jak
    to ogolnie wyglada

    moim zdaniem studia informatyczne nie sa strata czasu ale robienie czegos innego tez
    nie koniecznie jest strata czasu..jesli ktos chialby isc do tego zawodu by zarabiac
    pieniadze to ja chyba studia bym polecal (sam nie poszedlem na informatyke wlasnie po
    wywnioskowaniu ze programowania sam sie naucze a fizyki nie i czy byla to dobra
    decyzja zalezy od tego co ktos uwaza za bardziej wazne)

    (w moim wypadku uwazam ze byla dobra, gorzej z pechem w moim pozniejszym zyciu,
    zwlaszcza nabawianie sie przewleklej choroby a wlasciwie dwu)

strony : 1 ... 10 . [ 11 ] . 12


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: