Põhierinevus – ujuv vs topelt
Programmeerimisel on vajalik andmete salvestamine. Andmed salvestatakse mällu. Andmeid salvestavaid mälukohti nimetatakse muutujateks. Iga mälukoht võib salvestada teatud tüüpi andmeid. Iga andmetüübi mälumaht on erinev. Programmeerimiskeeltes, nagu Python, ei pea programmeerija muutuja tüüpi deklareerima. Programmeerimiskeeltes, nagu Java, peaks programmeerija deklareerima muutuja tüübi. Andmetüüpe on mitu, näiteks char, int, float ja double. Char andmetüüpi kasutatakse ühe märgi väärtuse salvestamiseks. Andmetüüpi int kasutatakse arvuliste väärtuste salvestamiseks ilma kümnendkohtadeta. Ujuk- ja topeltandmetüüpe kasutatakse kümnendkohtadega arvväärtuste salvestamiseks. Selles artiklis käsitletakse ujuva ja kahekordse erinevust. Peamine erinevus ujukoma ja topelt on see, et float on ühe täpsusega 32-bitine IEEE 754 ujukoma andmetüüp, samas kui double on topelttäpsusega 64-bitine IEEE 754 ujukoma andmetüüp.
Mis on float?
Ujuk on ühe täpsusega 32-bitine ujukoma. See on eelmääratletud andmetüüp, mida toetavad programmeerimiskeeled, nagu Java. Ujuva muutuja deklareerimiseks kasutatakse märksõna "ujuk". Seega ei saa seda kasutada identifikaatorite, näiteks meetodinimede ja muutujate nimede jaoks. Vaadake allolevat programmi.
Joonis 01: Java programm ujuva andmetüübiga
Vastav alt ül altoodud programmile on arv muutuja, mis võib salvestada ujukomaarvu. Siin kasutatakse -20.5f asemel -20.5f. -20,5 on topeltliteraal. Et näidata, et kompilaator salvestab väärtuse ujuvana, peaks programmeerija kirjutama f või F.
Mis on topelt?
Topelt on kahekordse täpsusega 64-bitine ujukoma. See on eelmääratletud andmetüüp. Topeltmuutuja deklareerimiseks kasutatakse märksõna "double". Seetõttu ei saa seda kasutada identifikaatorite, näiteks meetodite ja muutujate nimede jaoks. Vaadake allolevat programmi.
Joonis 02: Java programm kahe andmetüübiga
Vastav alt ül altoodud programmile on number kahekordset tüüpi muutuja. Numbri trükkimine annab väljundiks -20,5. Väärtuse salvestamiseks kulub mällu 64 bitti. Kui programmeerijaks on kirjutatud -20,5, loetakse see topeltarvuks. Ta oskab kirjutada ka -20,5d. "d" kirjutamine on valikuline.
Tüübi ülekandmist saab teostada andmetüüpide puhul. See on ühe andmetüübi teisendamiseks teise andmetüübiks protsess. Väiksema andmetüübi määramisel suuremale andmetüübile pole ülekandmist vaja. Laiendamine toimub baidis, lühike, int, pikk, ujuv, topeltjärjestus. Suurema andmetüübi määramisel väikesele andmetüübile on vaja teha ülekandmine.
Joonis 03: ülekandmine
Vastav alt ül altoodud programmile on num1 ja num2 ujukandmetüübid. Summeerimine määratakse muutujale summale. See on ujuk. Kuna float on double-ga võrreldes väiksem andmetüüp, saab selle määrata otse kahekordse muutuja numbrile ilma tüübi ülekandmiseta.
X ja y võivad salvestada topeltandmetüüpe. Summeerimine määratakse muutujale z. Seda saab hoida ka kahekordselt. Tüübi ülekandmine on vajalik suurema andmetüübi määramiseks väiksemale andmetüübile. Seetõttu on topeltväärtuse salvestamiseks ujuvmuutujasse vaja teha tüübivalu, kuna double on suurem andmetüüp kui float.
Millised on ujuva ja topelt sarnasused?
- Nii ujuv- kui ka topeltandmetüübid on eelmääratletud andmetüübid, mida toetavad programmeerimiskeeled, nagu Java.
- Nii ujuv- kui ka topelttüüpi ei kasutata selliste täpsuste jaoks nagu valuuta.
Mis vahe on ujuki ja topelt?
float vs double |
|
Ujuk on ühe täpsusega 32-bitine IEEE 754 ujukoma andmetüüp. | Topelt on kahekordse täpsusega 64-bitine IEEE 754 ujukoma andmetüüp. |
Baitide arv | |
Ujuk on 4 baiti pikk. | Duubel on 8 baiti pikk. |
Vaikeväärtused | |
Ujumise vaikeväärtus on 0.0f. | Double'i vaikeväärtus on 0.0d. |
Märksõna | |
Ujuva väärtuse deklareerimiseks kasutatakse märksõna „ujuk”. | Märksõna 'double' kasutatakse topeltväärtuse deklareerimiseks. |
Nõutav mälu | |
Ujuk nõuab kahekordsest vähem mälu. | Duubel nõuab rohkem mälu kui hõljumine. |
Kokkuvõte – ujuv vs topelt
Programmeerimisel on vaja andmeid salvestada. Need andmed salvestatakse mälukohtadesse ja neid nimetatakse muutujateks. Iga muutuja salvestab teatud tüüpi andmeid. On olemas andmetüüpe, nagu int, char, double ja float jne. Selles artiklis käsitleti kahe andmetüübi – float ja double – erinevust. Ujukoma ja kahekordne erinevus seisneb selles, et float on andmetüüp, mis on ühe täpsusega 32-bitine IEEE 754 ujukoma, samas kui double on andmetüüp, mis on kahekordse täpsusega 64-bitine IEEE 754 ujukoma.