JavaRush /Java Blog /Random-TL /Medyo mas malalim tungkol sa mga BigDecimal na numero
grishin
Antas
Харьков

Medyo mas malalim tungkol sa mga BigDecimal na numero

Nai-publish sa grupo
Sa wakas, pagkatapos ng 3 buwang pahinga, babalik ako sa pagkuha ng kurso. Nagpahinga ako sa simula ng Enero. Pagkatapos ay nagpasya akong lumipat sa pag-aaral ng iba pang mga disiplina, tulad ng HTML/CSS/Javascript. Sa daan, nagsimula akong matuto ng mga teknolohiya (servlets at JSP). Sa oras na iyon, nakumpleto ko ang 24 na antas at medyo natigil sa mga panloob na klase - hindi dahil sa anumang bagay ay hindi malinaw, ngunit ang kaalaman na nakuha ay kailangang sistematiko, dahil masyadong marami ang nakuha sa maikling panahon. sa mode na "gallop sa buong Europe". Kaya, ngayon ay nagpasya akong maingat na dumaan sa unang volume ng Horstman upang pagsamahin ang aking kaalaman sa Java Core at kasabay nito ay kumpletuhin ang natitirang mga gawain mula sa mga nakaraang antas, at pagkatapos ay magpatuloy sa mga antas. Nagsimula ako sa problema ng bonus mula sa antas 15 tungkol sa factorial. Nang harapin ito, nagpasya akong tingnan ang BigDecimal na klase. Wala akong nakitang partikular na sikat na mga artikulo sa internet, kaya tiningnan ko ang dokumentasyon at ang unang talata dito ay agad na nagpaisip sa akin, kahit papaano ay hindi malinaw ang lahat ng nasa loob nito. Nagpasya akong makarating sa ilalim ng katotohanan, at upang ang aking trabaho ay hindi mawalan ng kabuluhan, na-format ko ang lahat sa anyo ng isang artikulo at ngayon ay pino-post ko ito sa komunidad para sa pagpapalitan ng mga opinyon, at marahil ito ay makatulong sa isang tao. Kaya kinuha ko ang unang talata at hinati ito sa mga pangungusap. Mayroon lamang 5 pangungusap dito. Ang mga pangungusap bilang 3 at 4 ay sinalungguhitan at inilipat sa dulo ng talata (kung bakit ko ginawa ito - basahin pa). At ang pagsasalin ay ginawa nang naaayon sa binagong ayos na ito. Orihinal na unang talata
  1. Hindi nababago, arbitrary-precision sign na mga decimal na numero.
  2. Binubuo ang BigDecimal ng arbitrary precision integer unscaled value at 32-bit integer scale.
  3. Kung zero o positibo, ang scale ay ang bilang ng mga digit sa kanan ng decimal point.
  4. Kung negatibo, ang hindi naka-scale na halaga ng numero ay i-multiply sa sampu sa kapangyarihan ng negation ng scale.
  5. Ang halaga ng numero na kinakatawan ng BigDecimal ay samakatuwid ay ( unscaledValue × 10 -scale ).
Orihinal na may muling inayos na ayos ng pangungusap
  1. Hindi nababago, arbitrary-precision sign na mga decimal na numero.
  2. Binubuo ang BigDecimal ng arbitrary precision integer unscaled value at 32-bit integer scale.
  3. Ang halaga ng numero na kinakatawan ng BigDecimal ay samakatuwid ay ( unscaledValue × 10 -scale ).
  4. Kung zero o positibo, ang scale ay ang bilang ng mga digit sa kanan ng decimal point.
  5. Kung negatibo, ang hindi naka-scale na halaga ng numero ay i-multiply sa sampu sa kapangyarihan ng negation ng scale.
Pinalawak na pagsasalin (bawat punto sa pagsasalin ay tumutugma sa isang punto sa orihinal)
  1. Ang mga ito ay hindi nababago na fractional 1 decimal na mga numero na may tanda na 2 , na may di-makatwirang haba 34 .
  2. Ang BigDecimal na numero ay tinukoy ng dalawang parameter. Ang una sa kanila, ang tinatawag na. ang unscaled value ay isang integer na walang limitasyong haba. Alam lamang ang parameter na ito, hindi masasabi ng isa ang tungkol sa aktwal na halaga ng BigDecimal na numero. Upang gawin ito, dapat mong malaman ang pangalawang parameter - isang 32-bit integer na tinatawag na scale.
  3. Pagkatapos ay maaaring kalkulahin ang halaga ng BigDecimal na numero gamit ang sumusunod na formula: unscaledValue × 10 -scale
  4. Kung ang BigDecimal ay zero o positibo, ang scale ay ang bilang ng mga digit pagkatapos ng decimal point.
  5. Kung negatibo ang BigDecimal, ang hindi na-scale na halaga nito ay i-multiply sa 10 na itinaas sa isang kapangyarihan na katumbas ng sukat na may minus sign.
Mga Tala sa Pagsasalin
1. Fractional, dahil ang "arbitrary-precision" ay kinabibilangan, bukod sa iba pang mga bagay,
   na ang mga ito ay eksaktong mga numero, at ang mga eksaktong numero ay dapat na may decimal point,
   sa madaling salita - fractional.
2. Iyon ay maaaring maging positibo at negatibo.
3. Di-makatwirang haba, dahil ang ibig sabihin din ng "arbitrary-precision".
   "Isang di-makatwirang bilang ng mga digit."
4. Sa katunayan, ang BigDecimal na mga numero ay tunay na mga numero. Ngunit pag-install
   iba't ibang mga setting, maaari mong gamitin ang mga ito hindi lamang sa mga pang-agham na kalkulasyon,
   at gayundin sa pinansyal.
Kaya, ang mga salungguhit na pangungusap ay ang pangunahing nakakalito na kadahilanan para sa akin - tatanggalin ko lang ang mga ito mula sa teksto, dahil sa katunayan sila ay tungkol sa parehong bagay, at bukod pa, sila ay tungkol sa parehong bagay na sinasabi sa pangungusap bilang 5. Yung. tatlong pangungusap sa isang hilera ang nagsasabi lamang na ang hindi na-scale na halaga ay pinarami ng 10 na itinaas sa isang kapangyarihan na katumbas ng sukat na may minus sign. Ito ay nakakalito noong una mong basahin ito, dahil kapag nagbabasa ng pangungusap bilang 3, naiintindihan mo na dahil mayroong kung, nangangahulugan ito na magkakaroon ng isang bagay dito, at sa susunod na pangungusap ay iba pa. Ngunit hindi, pareho ang sinasabi ng dalawang pangungusap, sa magkaibang salita lang. Well, ang pangatlo (huli sa talata) na magkakasunod na pangungusap tungkol sa parehong bagay ay malamang na parang control shot. Ito ay hindi malinaw kung bakit ang teksto ay pinagsama-sama sa isang nakakalito na paraan, dahil ang formula na unscaledValue × 10 -scale mula sa huling pangungusap ay nagbibigay ng kahulugan ng isang malaking bilang nang malinaw, hindi malabo at komprehensibo hangga't maaari.
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION