2012-10-09 11 views

Odpowiedz

8

Rzeczywiste sposoby zmiennoprzecinkowych tj double lub float, w przeciwieństwie do integralną (int lub long)

10

Real number w przeciwieństwie do integers. W matematyce rzeczywistą liczbą może być dowolna wartość wzdłuż kontinuum, taka jak 4.2 lub pi. Liczby całkowite są podzbiorem liczb rzeczywistych.

to prymitywy Java. Niektóre z ważnych dla numerów to: int, kiedy chcesz mieć liczbę całkowitą i double, kiedy chcesz dopuścić ułamki. Jeśli od nich odejdziesz, zwykle masz ku temu konkretny powód.

Liczba całkowita jest bardzo łatwa do przedstawienia w postaci binarnej i łatwo jest określić konkretny zakres liczb całkowitych, który można dokładnie przedstawić za pomocą określonej liczby bitów. Numer int w języku Java wykorzystuje 32 bity i przenosi użytkownika z zakresu od -2,147,483,648 do 2 147 483 647. Pozostałe typy integralne są podobne, ale z różną liczbą bitów.

Jednak reprezentowanie liczb wzdłuż kontinuum jest trudniejsze. Między dowolnymi dwoma punktami na linii liczb rzeczywistych jest nieskończenie wiele innych liczb rzeczywistych. W związku z tym nie jest możliwe dokładne odwzorowanie wszystkich liczb rzeczywistych w przedziale. Jednym ze sposobów obejścia tego problemu jest floating-point numbers. Nie będę się zbytnio zajmował szczegółami, ale w zasadzie utracono precyzję, tak że istnieją luki w tym, co można dokładnie przedstawić. W wielu przypadkach jest to nieistotne, ale w przypadku śledzenia stanu konta bankowego może to mieć znaczenie. Warto przeczytać słynny model What Every Computer Scientist Should Know About Floating-Point Arithmetic.

W języku Java jednym ze sposobów obejścia niektórych z tych problemów jest użycie czegoś takiego jak BigDecimal. Niektóre inne języki mogą oferować inne prymitywy jako alternatywy. Na przykład C# ma typ danych decimal, podczas gdy Java nie.

+0

Dobra, dobra odpowiedź, dzięki. – user1732538