JavaRush /Blog Java /Random-PL /Nieco głębiej o liczbach BigDecimal
grishin
Poziom 27
Харьков

Nieco głębiej o liczbach BigDecimal

Opublikowano w grupie Random-PL
Wreszcie po 3 miesięcznej przerwie wracam do kursu. Na początku stycznia pojechałem na przerwę. Następnie zdecydowałem się zająć innymi dyscyplinami, takimi jak HTML/CSS/Javascript. Po drodze zacząłem uczyć się technologii (serwlety i JSP). W tym czasie ukończyłem 24 poziomy i trochę utknąłem na zajęciach wewnętrznych - nie żeby coś było niejasne, po prostu trzeba było usystematyzować zdobytą wiedzę, bo w krótkim czasie przyswojono jej zbyt dużo w trybie „galopu po Europie”. Postanowiłem więc teraz dokładnie przebrnąć przez pierwszy tom Horstmana, aby utrwalić moją wiedzę o Java Core i jednocześnie dokończyć pozostałe zadania z poprzednich poziomów, a następnie przejść dalej przez kolejne poziomy. Zacząłem od problemu bonusowego z poziomu 15 dotyczącego silni. Po uporaniu się z tym postanowiłem przyjrzeć się bliżej klasie BigDecimal. Nie znalazłem w internecie żadnych szczególnie popularnych artykułów, więc zajrzałem do dokumentacji i już pierwszy akapit w niej od razu dał mi do myślenia, jakoś nie wszystko w niej było jasne. Postanowiłem dotrzeć do sedna prawdy i żeby moja praca nie poszła na marne sformatowałem wszystko w formie artykułu i teraz wrzucam go do społeczności w celu wymiany opinii i może się uda być komuś pomocnym. Wziąłem więc pierwszy akapit i podzieliłem go na zdania. Jest w nim tylko 5 zdań. Zdania nr 3 i 4 zostały podkreślone i przeniesione na koniec akapitu (dlaczego to zrobiłem – czytaj dalej). I tłumaczenie zostało wykonane odpowiednio w tej zmienionej kolejności. Oryginalny pierwszy akapit
  1. Niezmienne liczby dziesiętne ze znakiem o dowolnej precyzji.
  2. BigDecimal składa się z nieskalowanej wartości całkowitej o dowolnej precyzji i 32-bitowej skali całkowitej.
  3. Jeśli zero lub dodatnia, skala to liczba cyfr po prawej stronie przecinka dziesiętnego.
  4. Jeśli jest ujemna, nieskalowaną wartość liczby mnoży się przez dziesięć do potęgi negacji skali.
  5. Wartość liczby reprezentowanej przez BigDecimal wynosi zatem ( unscaledValue × 10 -scale ).
Oryginał ze zmienioną kolejnością zdań
  1. Niezmienne liczby dziesiętne ze znakiem o dowolnej precyzji.
  2. BigDecimal składa się z nieskalowanej wartości całkowitej o dowolnej precyzji i 32-bitowej skali całkowitej.
  3. Wartość liczby reprezentowanej przez BigDecimal wynosi zatem ( unscaledValue × 10 -scale ).
  4. Jeśli zero lub dodatnia, skala to liczba cyfr po prawej stronie przecinka dziesiętnego.
  5. Jeśli jest ujemna, nieskalowaną wartość liczby mnoży się przez dziesięć do potęgi negacji skali.
Tłumaczenie rozszerzone (każdy punkt w tłumaczeniu odpowiada punktowi w oryginale)
  1. Są to niezmienne liczby dziesiętne ułamkowe 1 ze znakiem 2 o dowolnej długości 34 .
  2. Liczba BigDecimal jest określona przez dwa parametry. Pierwsza z nich, tzw. wartość nieskalowana jest liczbą całkowitą o nieograniczonej długości. Znając tylko ten parametr nie można nic powiedzieć o rzeczywistej wartości liczby BigDecimal. Aby to zrobić, musisz znać drugi parametr - 32-bitową liczbę całkowitą zwaną skalą.
  3. Następnie wartość liczby BigDecimal można obliczyć korzystając ze wzoru: unscaledValue × 10 -scale
  4. Jeśli BigDecimal ma wartość zero lub jest dodatnia, skalą jest liczba cyfr po przecinku dziesiętnym.
  5. Jeśli wartość BigDecimal jest ujemna, jej nieskalowaną wartość mnoży się przez 10 podniesioną do potęgi równej skali ze znakiem minus.
Uwagi do tłumaczenia
1. Ułamkowy, ponieważ „dowolna precyzja” obejmuje m.in.
   że są to dokładne liczby i dokładne liczby muszą mieć przecinek dziesiętny,
   innymi słowy - ułamkowy.
2. To znaczy może być zarówno pozytywny, jak i negatywny.
3. Dowolna długość, ponieważ „dowolna precyzja” oznacza również
   „Dowolna liczba cyfr”.
4. W rzeczywistości liczby BigDecimal są liczbami rzeczywistymi. Ale instalacja
   różne ustawienia, można je wykorzystać nie tylko w obliczeniach naukowych,
   ale także finansowych.
Tak więc podkreślone zdania były dla mnie głównym czynnikiem dezorientującym - właściwie po prostu usunąłbym je z tekstu, ponieważ w rzeczywistości dotyczą tego samego, a poza tym dotyczą tego samego, co zostało powiedziane w zdaniu numer 5. Te. trzy zdania z rzędu mówią tylko, że wartość nieskalowaną mnoży się przez 10 podniesioną do potęgi równej skali ze znakiem minus. Jest to mylące, gdy czytasz to po raz pierwszy, ponieważ czytając zdanie numer 3, rozumiesz, że skoro jest „jeśli”, oznacza to, że tutaj będzie jedna rzecz, a w następnym zdaniu coś innego. Ale nie, oba zdania mówią to samo, tylko innymi słowami. Cóż, trzecie (ostatnie w akapicie) zdanie z rzędu o tej samej rzeczy jest prawdopodobnie jak strzał kontrolny. Nie jest jasne, dlaczego tekst został skompilowany w tak zagmatwany sposób, ponieważ formuła unscaledValue × 10 -scale z ostatniego zdania podaje definicję dużej liczby tak jasno, jednoznacznie i kompleksowo, jak to tylko możliwe.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION