Soovitatav, 2024

Toimetaja Valik

Erinevus ujuki ja kahekordse vahel

Ujuv ja kahekordne on andmeliigid ujuva punkti tüübi all. Ujuvpunkti numbrid on reaalarvud, millel on selles murdosa. Peamine erinevus ujuki ja kahekordse vahel on see, et ujukitüübi mälu on 32-bitine. Teisest küljest on kahekordset tüüpi 64-bitine mälu. Ujuki ja topelt vahel on ka teisi erinevusi, mida käsitletakse allpool toodud võrdluskaardil.

Võrdluskaart:

Võrdluse alusUjudaKahekohaline
TäpsusÜhekordne täpsus.Topelt täpsus.
Bitti32 bitti.64 bitti.
Baidid4 baiti.8 baiti.
Ligikaudne vahemik1, 4e-045 kuni 3, 4e + 0384, 9e-324 kuni 1, 8e + 308
Bittide esindamine1 bit esindab märkbitti.
8 bit esindab eksponenti.
23 bitti esindavad mantissat.
1 bit esindab märkbitti.
11 bit esindab eksponenti.
52 bitti esindavad mantissat.
TäpsusVähem täpne.Täpsem.

Ujuki mõiste

Andmetüübi float on üks ujukoma tüüpi. Andmetüübi floatil on 32-bitine salvestus (mis on võrdne 4 baitiga) ujukitüübi muutuja jaoks. Andmetüübi float määrab ühe täpsuse. 32-bitise kujutise esitamist ujukis saab seletada kui 1-bit on esindatud märkbittina, 8 bitti on esindatud eksponendina ja 23 bitti on esitatud mantissana. Ujuki tüübi maksimaalne vahemik on 1, 4e-045 kuni 3, 4e + 038. Võrreldes kahekordse ujuvpunkti tüübiga on matemaatilise arvutamise korral float-tüüp vähem täpne. Mõelgem näiteks ujuki abil.

 #include #include int main () {float num1 = sqrt (64.23) cout << num1; } // väljund 8.00060 

Nagu ülaltoodud koodis, võite tähele panna, et ujuki muutuja num1 on määratud väärtusega, mis on funktsiooni sqrt () järgi, mis tagastab sellele funktsioonile edastatud väärtuse ruutjuure. Te võite täheldada, et kui num1 on väärtuses trükitud, on see peaaegu täpse väärtuse lähedal, kuid see ei ole õige. Vaatame nüüd alltoodud näidet, kui sama programmi käivitatakse, kasutades kahekordset andmesidet.

Kahekordse mõiste määratlus

Kahekordne on teine ​​liik ujuva punkti andmetüüp. Andmesidetüübil on 64-bitine salvestus (mis on võrdne 8 baitiga) kahesuguse muutuja jaoks. See määrab kahekordse täpsuse, kuna selle suurus on ujukist kahekordne. Tüüpi topelt 64-bitist kujutist saab seletada, kuna 1 bit esindab märkbitti, 11 bitti esindab eksponenti ja ülejäänud 52 bitti esindab mantissat. Ujuki ja kahekordse kõige sagedamini kasutatava andmetüübi hulgas on kahekordne. Tüüpi topelt kasutatakse matemaatilise arvutamise ajal ja kui vaja on täiuslikku täpsust. Matemaatilised funktsioonid sin (), cos () ja sqrt () tagastavad alati kahekordse väärtuse. Mõistkem andmetüübi täpsust näitega kaks korda.

 #include #include int main () {double num1 = sqrt (64.23) cout << num1; } // väljund 8.0143621 

Te võite tähele panna, et näites saadud väljund, mis seletab ujuki, erineb näites saadud väljundist, selgitades topelt. Niisiis võime sellest öelda, et kahekordselt saadud tulemused on floatiga võrreldes täpsemad.

Põhilised erinevused ujuki ja kahekordse vahel

  1. Andmetüübi float määrab ühe täpsuse, mis tähendab, et võrreldes kahekordse täpsusega, on kahekordne täpsus, samas kui topelt täpsustab topelt täpsust, kuna see on lihtsalt kahekordne ujuk, mille viga on ujukiga võrreldes tühine.
  2. Ujuki tüübi muutujal on 32 bitti, samas kui kahesuguse tüübi muutujaga on salvestatud 64 bitti, mis koostab topeltarvu suurema ladustamisel võrreldes ujukiga.
  3. Ujuki väärtus võib olla vahemikus 1, 4e-045 kuni 3, 4e + 038, samas kui kahekordse väärtuse väärtus võib olla vahemikus 4.9e-324 kuni 1.8e + 308.
  4. Ujuvväärtuse bitide esitusviis sarnaneb sellele, et 1 bitti ujukit kasutatakse laulupostiks, 8 bitti eksponendiks ja 23 bitti mantissa salvestamiseks. Teisest küljest sarnaneb kahekordne väärtus sellele, et 1 bitti kasutatakse laulupostiks, 11 bitti eksponendiks ja 52 bitti sellest mantissa salvestamiseks.
  5. Võrreldes kahekordse ujukiga on seega vähem täpne, samas kui kasutatakse matemaatilist arvutust.

Järeldus:

Noh, peate üldiselt kasutama kahekordset, sest see annab täpsuse, mis on meie peamine moto enamikel aegadel.

Top