Pozdrawiam, Piotr
Pozdrawiam, Piotr
No ale liczby dziesietne ludzie uzywaja nagminnie, a liczb binarnych zmiennoprzecinkowych ... to nawet programisci nie uzywaja :-)
Zdarzylo Ci sie kiedys okreslic, ze to by bylo dobrze przemnozyc przez
11.01101 ?
Nie ja.
J.
Bez znaczenia - problem ciagle ten sam.
Nawiasem mowiac - czy mi sie wydaje, czy ten format 80-bit jest po cichutku wycofywany ?
Nie, ale czesto ulatwia.
A kto zgarnial "cwierccentowki Dextera" ? :-)
Ze wspomnien starszego informatyka ... bankowego. "Fortran, co to za g* jest. Klient ma na koncie 25.60, przychodzi mu
74.40, i na koncie ma 99.999996 Przeszlismy na podwojna precyzje. To teraz ma 99.999999999954 "J.
Dobre :)
A na problem - mimo że powszechnie znany - jednak ciągle nadziewają się nowi. Dziwne, że w banku (wydawałoby się, poważnej instytucji) w to wpadają.
Ciekawostka - GnuCash z tego powodu wiele lat temu zrezygnował z float na rzecz stałego przecinka:
Nowi jak nowi, ale żeby wojsko... I niestety były ofiary.
KLoSS
W konkretnych zastosowaniach przemysłowych? Embedded? Bardzo dużo.
A co ma koprocesor tutaj do rzeczy?
W dniu 2019-06-12 o 17:27, J.F. pisze:
Na studiach jest (powinien być?) cały przedmiot o nazwie "Arytmetyka maszyn cyfrowych", gdzie na kilkudziesięciu godzinach wykładów można dokładnie dowiedzieć się, jak są pamiętane liczby całkowite ze znakiem, bez znaku, zmiennoprzecinkowe, dlaczego i kiedy występują błędy zaokrągleń itp. Można też dowiedzieć się, że warunek "jeśli a jest równe b" przy rzeczywistych typach a, b to proszenie się o kłopoty.
Problemy nie zależą od języka programowania. Ułamka dziesiętnego 0.8 nie da się w przyjętym sposobie zapisu liczb zmiennoprzecinkowych zapisać dokładnie - w układzie dwójkowym jest to ułamek okresowy, ma nieskończenie wiele znaczących cyfr. Nie można ich wszystkich pamiętać. Oczywistym rozwiązaniem pozwalającym uniknąć błędów jest używanie tylko liczb całkowitych. Np. jeśli ma to być jakaś kwota pieniędzy, należy liczyć w groszach (zawsze całkowitych), a nie złotówkach i ułamkach złotego.
P.
Tymczasem akcje Ursusa stoją po 0.797 zł. :)
Mateusz
Pan Mateusz Viste napisał:
Zdaje się, że na słowackich stacjach benzynowych ceny paliwa podawane są z taką dokładnością (w euro).
We Francji także, i ten przykład pierwszy przyszedł mi do głowy, ale uznałem go za chybiony - wszak Piotrne specyficznie pisał o atomizmie grosza, a nie centa.
Mateusz
Pan Mateusz Viste napisał:
Ponadto w przypadku paliw, niejako z definicji, mamy do czynienia ze zmienną typu float.
W dniu 2019-06-20 o 14:16, Piotrne pisze:
Masz teoretycznie rację ale to jakiego typu zmiennej używasz zależy od języka, np w takim Cliperze 5.3 w którym w latach 90 popełniłem kilka programów liczących pieniądze jest zmienna INT ale w praniu wyszło że jest ona typu float :( i z problemem opisanym przez Przemol-a musiałem się wtedy już zmierzyć, dodawałem tysięczne części grosza na końcu przed samym porównaniem.
W dniu 2019-06-20 o 14:38, Mateusz Viste pisze:
...czyli jednostką jest tutaj 1/100 grosza.
Czasem praktyczne jest pamiętanie liczb zmiennoprzecinkowych jako ułamków - oddzielnie licznika i mianownika (typu całkowitego). Tak robi np. VirtualDub (do przetwarzania filmów) przy zapamiętywaniu parametrów strumienia video.
P.
W dniu 2019-06-20 o 20:39, Janusz pisze:
Można jeszcze użyć typu decimal (np. w C#), który pamięta liczby w układzie dziesiętnym i nie ma problemów z zaokrągleniami liczby 0.1. Obliczenia są znacznie wolniejsze niż dla double (są realizowane programowo, a nie sprzętowo).
P.
Ciekawe, czy pamietaja na float, double, czy na int w 0.1gr :-)
J.
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...
AK
Dokładnie tak ;)
AK
I co z tego? "Problemy" z liczbami fp kompletnie nie zaleza od ich podstawy.
AK
Nie. Obliczenia posrednie (wewnetrznie robione na np 80 bitach) sa dokladniejsze, wiec koncowy wynik tez (lepiej/dokladniej obcinany/zaokraglany)
A nie wiem. I.. chce nie wiedziec. Ba! Wlasnie umiejetnosc poslugiwania sie fp polega na.. "nicniewiedzeniu" o ich faktycznej reprezentacji.
Tak, ale w przypadku "surowych" dziesietnych czyli nie bedacych wynikiem/uczestniczacych w obliczeniach. A ilez takich? Nawet w bankowosci dosc malo.
Jamci... :)
Zgoda, jeno cus mi sie wydaje ze to dosc mlody osesek psioczyl na ten Fortran ;)
AK
Ci co sie znaja (starzy) to sie _nie nadziewaja_. Nadziewaja sie nieodmiennie dzisiejsi MWzDM :(
A co mi k... z roznica? :) Jak juz to wazniejsza jest dlugosc mantysy.
AK
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.