Wyznaczanie dokładności nieznanej zmiennej.
Ostatnio zmodyfikowano 2018-02-16 20:19
matka5432 Temat założony przez niniejszego użytkownika |
Wyznaczanie dokładności nieznanej zmiennej. » 2018-02-14 23:11:04 Witam, w jaki sposób mogę wyznaczyć dokładność (czyli liczbę cyfr dziesiętnych z jaką reprezentowane są liczby) nieznanej zmiennej. Powiedzmy, że jest nią double. Miałem taki pomysł, aby zapisać do zmiennej wynik dzielenia 1/3 = 0.(3), a następnie mnożyć ją w pętli przez 10, dopóki ostatnia cyfra części całkowitych tej liczby jest równa 3. Problem jest taki, że jeśli przypadkowo cyfra poza zakresem dokładności również będzie równa 3, to otrzymam niepoprawny wynik. (Chciałbym zaimplementować taką funkcję, nie chcę gotowych) |
|
pekfos |
» 2018-02-14 23:22:10 Jak by to miało działać? Precyzja typów zmiennoprzecinkowych nie jest stała. |
|
matka5432 Temat założony przez niniejszego użytkownika |
» 2018-02-14 23:55:49 Fakt, dla większych liczb precyzja zmniejsza się. Mi jednak chodzi o długość mantysy (chyba dobrze mówię). Np dla float'a jest równa 7, bo ma on 7 cyfr znaczących + wykładnik. |
|
pekfos |
» 2018-02-15 00:17:59 Jak chcesz określić długość mantysy w bitach dla jakiegoś typu zmiennoprzecinkowego (zgodnego z IEEE 754), to chcesz maksymalizować n, tak by 1 + 2-n było reprezentowalne. |
|
matka5432 Temat założony przez niniejszego użytkownika |
» 2018-02-15 00:56:49 Zrobiłem to w ten sposób, że w pętli zapisuje do zmiennej wartość 1+1/2^n a następnie sprawdzam, czy (zmienna-1) * 2^n jest równa jedności, a jeśli tak to zwiększam licznik. Chyba dobrze, bo program zwraca poprawną wartość. Zastanawia mnie, dlaczego program nie działa poprawnie z wartością 1/2^n i sprawdzeniu czy zmienna * 2^n jest równa jedności? |
|
pekfos |
» 2018-02-15 01:08:40 To co napisałeś nie ma sensu. |
|
matka5432 Temat założony przez niniejszego użytkownika |
» 2018-02-15 01:11:34 Przepraszam, oczywiście wartość 1 + 1/2^n. Źle napisałem, ale w programie oczywiście jest 1 + 1/2^n. |
|
pekfos |
» 2018-02-15 01:17:20 A jak brzmi twoje pytanie, w wersji z sensem? |
|
« 1 » 2 |