Cytat z książki o Jawie "Radzę trzymać się podwójnego dla liczb rzeczywistych", a także "powinieneś trzymać się podwójnego wpisz prawdziwe wartości ". Nie rozumiem, co oznacza prawdziwa liczba lub wartość ... Prawdziwa liczba w przeciwieństwie do czego?Co rozumie się za pomocą liczb rzeczywistych lub wartości w java i bardzo elementarne wyjaśnienie typów pierwotnych w java
Odpowiedz
Rzeczywiste sposoby zmiennoprzecinkowych tj double
lub float
, w przeciwieństwie do integralną (int
lub long
)
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.
Dobra, dobra odpowiedź, dzięki. – user1732538