Po prostu nie rozumiem liczb stałych i zmiennoprzecinkowych z powodu trudnych do odczytania ich definicji w Google. Ale żadne z nich nie dostarcza wystarczająco prostego wyjaśnienia, czym one naprawdę są. Czy mogę uzyskać prostą definicję z przykładem?
numbers
computer-science
representation
user942451
źródło
źródło
Odpowiedzi:
Liczba stałoprzecinkowa ma określoną liczbę bitów (lub cyfr) zarezerwowanych dla części całkowitej (część po lewej stronie przecinka dziesiętnego) i określoną liczbę bitów zarezerwowanych dla części ułamkowej (część po prawej stronie przecinka punkt). Bez względu na to, jak duża lub mała jest twoja liczba, zawsze będzie używać tej samej liczby bitów dla każdej porcji. Na przykład, jeśli twój format stałego punktu był dziesiętny,
IIIII.FFFFF
wówczas największą liczbą, którą możesz przedstawić, byłaby,99999.99999
a najmniejszą liczbą niezerową00000.00001
. Każdy bit kodu, który przetwarza takie liczby, musi mieć wbudowaną wiedzę o miejscu przecinka.Liczba zmiennoprzecinkowa nie rezerwuje określonej liczby bitów dla części całkowitej lub ułamkowej. Zamiast tego rezerwuje pewną liczbę bitów dla numeru (zwany mantysa lub mantysy ) i pewną liczbę bitów do powiedzenia , gdzie w tym miejsce dziesiętne liczby siedzi (zwanej wykładnik ). Zatem liczba zmiennoprzecinkowa, która zajmowała 10 cyfr z 2 cyframi zarezerwowanymi dla wykładnika, może reprezentować największą
9.9999999e+50
i najmniejszą niezerową wartość0.0000001e-49
.źródło
-9.9999999e+50
.00000.00001
? Spodziewam się00000.00000
zamiast tego zobaczyć . Czy masz też jakieś odniesienia, które zawierają bardziej szczegółowe informacje na temat liczb stałych?Liczba stała oznacza po prostu, że po przecinku znajduje się stała liczba cyfr. Liczba zmiennoprzecinkowa pozwala na zmianę liczby cyfr po przecinku.
Na przykład, jeśli masz sposób przechowywania liczb, który wymaga dokładnie czterech cyfr po przecinku, jest to punkt stały. Bez tego ograniczenia jest zmiennoprzecinkowa.
Często, gdy używany jest punkt stały, programista w rzeczywistości używa liczby całkowitej, a następnie przyjmuje założenie, że niektóre cyfry są poza kropką dziesiętną. Na przykład mógłbym chcieć zachować dokładność dwóch cyfr, więc wartość 100 oznacza w rzeczywistości 1,00, 101 oznacza 1,01, 12345 oznacza 123,45 itd.
Liczby zmiennoprzecinkowe są bardziej ogólnego przeznaczenia, ponieważ mogą w ten sam sposób reprezentować bardzo małe lub bardzo duże liczby, ale istnieje niewielka kara w przypadku konieczności posiadania dodatkowego miejsca na miejsce po przecinku.
źródło
Z mojego punktu widzenia arytmetyka stałoprzecinkowa jest wykonywana przy użyciu liczb całkowitych. gdzie część dziesiętna jest przechowywana w ustalonej liczbie bitów lub liczba jest mnożona przez wymaganą liczbę cyfr z dokładnością dziesiętną.
Na przykład, jeśli liczba
12.34
ma zostać zapisana i potrzebujemy tylko dwóch cyfr dokładności po przecinku, liczba jest mnożona przez,100
aby uzyskać1234
. Podczas wykonywania obliczeń matematycznych na tej liczbie używamy tego zestawu reguł. Dodanie5620
lub56.20
do tej liczby dałoby6854
dane lub68.54
.Jeśli chcemy obliczyć część dziesiętną liczby stałoprzecinkowej, używamy operandu modulo (%).
12,34 (pseudokod):
Liczby zmiennoprzecinkowe to zupełnie inna historia w programowaniu. Obecny standard dla liczb zmiennoprzecinkowych używa około 23 bitów dla danych liczby, 8 bitów dla wykładnika i 1, ale dla znaku. Zobacz ten link do Wikipedii, aby uzyskać więcej informacji na ten temat.
źródło
Termin „stały punkt” odnosi się do odpowiedniego sposobu przedstawiania liczb, ze stałą liczbą cyfr po przecinku, a czasem przed nim. W przypadku reprezentacji zmiennoprzecinkowej kropka dziesiętna może „pływać” względem znaczących cyfr liczby. Na przykład reprezentacja stałoprzecinkowa z jednolitą konwencją umieszczania przecinka dziesiętnego może reprezentować liczby 123,45, 1234,56, 12345,67 itd., Podczas gdy reprezentacja zmiennoprzecinkowa może dodatkowo przedstawiać 1,234567, 123456,7, 0,00001234567, 1234567000000000 itd.
źródło
Weź numer 123.456789
Liczba zmiennoprzecinkowa pozwala na bardzo precyzyjne przedstawienie większości liczb. Naprawiono jest mniej precyzyjne, ale prostsze dla komputera.
źródło