Нарешті, після трьох місяців перерви, повертаюся до проходження курсу. На перерву пішов на початку січня. Вирішив тоді перейти на вивчення інших дисциплін, як HTML/CSS/Javascript. Принагідно і технології почав вивчати (сервлети і JSP). На той момент пройшов 24 рівні і трохи зав'яз на внутрішніх класах — не те, щоб щось було не зрозуміло, просто потрібна була систематизація отриманих знань, тому що занадто багато їх було отримано за короткий період у режимі "галопом по Європах". Так от, зараз я вирішив ретельно пройтися по першому тому Хорстмана для закріплення знань Java Core і одночасно дорішати завдання з попередніх рівнів, після чого піти далі по рівнях. Почав із бонусної задачі з 15-го рівня про факторіал. Розробившись із нею, вирішив глибше розібратися з класом BigDecimal. Популярних статей в інеті особливо не знайшов, тоді заліз у документацію і перший абзац у ній одразу ж змусив поворухнути мізками, якось не все було ясно. Вирішив докопатися до істини, а щоб праці не пропали даремно, оформив усе у вигляді статті і ось викладаю на суд спільноти для обміну думками, та й може комусь буде підмогою. Отже, я взяв перший абзац та розбив його на пропозиції. У ньому лише 5 пропозицій. Пропозиції номер 3 та 4 наголосив та перемістив у кінець абзацу (навіщо так зробив — читайте далі). І переклад відповідно зробив у такому зміненому порядку. Оригінал першого абзацу
- Immutable, arbitrary-precision signed decimal numbers.
- На велику загальну консистенцію arbitrary precision integer uncaled value and 32-bit integer scale.
- Якщо cero або позитивний, шрифт є числом піктограми до правого кутового пункту.
- Якщо negative, unscaled value of the number is multiplied by ten to the moc of the negation of the scale.
- Значення числа, спрямованої на BigDecimal is thefore ( unscaledValue × 10 -scale ).
- Immutable, arbitrary-precision signed decimal numbers.
- На велику загальну консистенцію arbitrary precision integer uncaled value and 32-bit integer scale.
- Значення числа, спрямованої на BigDecimal is thefore ( unscaledValue × 10 -scale ).
- Якщо cero або позитивний, шрифт є числом піктограми до правого кутового пункту.
- Якщо negative, unscaled value of the number is multiplied by ten to the moc of the negation of the scale.
- Це незмінні дробові десяткові числа зі знаком 2 , довільної довжини 34 .
- Число BigDecimal визначається двома параметрами. Перший, т.зв. unscaled value є цілим числом необмеженої довжини. Знаючи лише цей параметр, не можна нічого сказати про фактичну величину числа BigDecimal. Для цього потрібно обов'язково знати другий параметр - 32-бітове ціле число, яке називається масштабом (scale).
- Тоді величину числа BigDecimal можна обчислити за такою формулою: unscaledValue × 10 -scale
- Якщо число BigDecimal дорівнює нулю чи позитивне, масштаб — кількість цифр після десяткової точки.
- Якщо число BigDecimal негативне, його unscaled value множиться на 10, зведене в ступінь, що дорівнює scale зі знаком мінус.
Примітки до перекладу 1. Дробні, тому що в "arbitrary-precision" закладено також, що це числа точні, а точні числа мають бути з десятковою комою, іншими словами - дробовими. 2. Тобто. можуть бути як позитивними, і негативними. 3. Довільна довжина, тому що "arbitrary-precision" означає також "довільна кількість цифр". 4. Фактично, числа BigDecimal – це речові числа. Але встановлюючи різні налаштування, можна використовувати їх не тільки в наукових розрахунках, а й у фінансових.Так ось, підкреслені пропозиції були основним фактором, що заплутував для мене — я б їх насправді просто прибрав з тексту, тому що фактично вони про одне і те ж, а крім того про те ж, що йдеться і в пропозиції №5. Тобто. у трьох реченнях поспіль йдеться тільки про те, що unscaled value множиться на 10, зведене в ступінь, що дорівнює scale зі знаком мінус. Це збиває з пантелику при першому прочитанні, тому що читаючи пропозицію номер 3, розумієш, що раз стоїть if, значить тут буде щось одне, а в наступному реченні - щось інше. Та ні — в обох реченнях те саме, тільки іншими словами. Ну а третя (остання в абзаці) пропозиція поспіль про те саме, напевно, як контрольний постріл. Незрозуміло, навіщо текст склали таким заплутаним чином, адже формула unscaledValue × 10 -scale з останньої речення максимально ясно, однозначно та вичерпно дає визначення великому числу.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ