Kezdőoldal » Számítástechnika » Programozás » C# int vagy float? (kifejtés...

C# int vagy float? (kifejtés alul)

Figyelt kérdés

Hali! Először is jelezném, hogy kb pár napja kezdtem el programozással foglalkozni, egyetemen tanulok, még nem igazán álltak össze a dolgok, ezért bocsi, ha hülyeséget írok.

Szóval C#-ban tanulunk programozni és arról volt szó, hogy egy egész típusú változó (legyen x) esetén meg kell adni, hogy mondjuk int, short, sbyte stb (deklaráció vagy mi).

Ha mondjuk megadom, hogy byte x = akármi, akkor x a [0,255] intervallumban mozoghat, de ha mondjuk azt adom, hogy int x = akármi, akkor már -2milliárd +2milliárd környékén mozoghat ugye. De nem ugyanakkora helyet használnak fel, hanem az első 1 byte, a másik már 4 byte. És ha tudjuk, hogy x az nem lesz túl nagy, érdemes az elsőt használni. (Ha jól értem, bár ki tudja).

És akkor jön már a kérdés :D

A ulong 8 byte-ot használ és kb 0 és 1,8x10^19-ig van a terjedelem, míg lebegőpontos (?) szám esetén a float 4 byte-ot használ, de 3,4x10^38-ig terjed. Na most...ha én egy rohadt nagy egészet akarok tárolni, akkor a ulong-ot használjam, mert az van az egészre vagy a floatot? Mert ugye az egyik 8byte a másik meg csak 4. Na, csak értitek, hogy mit nem értek :D Lehet, hogy semmit mondjuk :'D


2020. szept. 24. 15:44
1 2
 1/12 A kérdező kommentje:
Ráadásul nagyobb a terjedelem is a float-nál.
2020. szept. 24. 15:45
 2/12 anonim ***** válasza:
22%

Hát igen, a semminél nem sokkal többet értesz, de legalább jó úton haladsz.


Az efféle byte, char meg hasonló, kis helyigényű változótipusok a régi időkből maradtak meg, mert amikor mondjuk az egész operatív tár nem volt több 256 byte-nál, akkor nem volt mindegy, hogy egy-egy numerikus változót milyen nagyságú ládában tárolunk.


Ma is megvan a dolog értelme, mert egy millió byte kevesebb helyet foglal el mint félmillió int, ugye.


Szóval, a float az nem egész értékekre van kitalálva, ellentétben az int-tel. Ha egész, akkor int, ha nem akkor float (double).

Az intről tudni kell, hogy gépfüggő, tehát adott architektúra gépi szava az int.

Ha ez az architektúra 16 bites akkor 2, ha 32 bites, akkor 4, ha 64 akkor meg 8 byte terjedelmű rajta az integer.

Ebből balról az első bit (MSB) lehet előjelbit, a többi meg az érték. Ha nincs előjel, akkor dupla akkora lesz a tárolható intervallum.

2020. szept. 24. 16:21
Hasznos számodra ez a válasz?
 3/12 anonim ***** válasza:
94%
#2 miért hazudsz a kérdezőnek? Ezért vagy így lepontozva?
2020. szept. 24. 16:34
Hasznos számodra ez a válasz?
 4/12 A kérdező kommentje:
Most mi van?
2020. szept. 24. 16:42
 5/12 anonim ***** válasza:
100%

A 2-es gondolom csak trollkodik.

Itt olvasgass:

[link]

2020. szept. 24. 16:46
Hasznos számodra ez a válasz?
 6/12 anonim ***** válasza:
0%

Integer típusok: egész értékek tárolása


Kétféle reprezentációban van jelen a nyelvben:

32 bites egész és 64 bites egész.

32bites egész értelmezési tartománya:

[-2,147,483,647 ; 2,147,483,647].

64 bites egész értelmezési tartománya: [-9,223,372,036,854,775,808 ; 9,223,372,036,854,775,808]

2020. szept. 24. 16:49
Hasznos számodra ez a válasz?
 7/12 anonim ***** válasza:
0%

Amúgy, nem kell megijedni, a legtöbb valamire való nyelvben létezik bigInt.

Azzal meg az értelmezési tartomány a végtelenbe kinyújtható.

2020. szept. 24. 16:50
Hasznos számodra ez a válasz?
 8/12 anonim ***** válasza:
24%

"float (double)."


A kettő nem ugyanaz. Nagyon nem. :) A float és az int is teljesen más. A float amúgy magyarra fordítva: lebegőpontos szám. Van karakterisztikája és mantisszája is. Ha jobban érdekel utánanézhetsz. Anno még Egyetemen papíron kellet számolgatni és átváltani számokat floatba ide-oda.

2020. szept. 24. 18:06
Hasznos számodra ez a válasz?
 9/12 anonim ***** válasza:
29%

"A kettő nem ugyanaz. Nagyon nem. :) "


Hát nem nagyon, csak egy kicsit más.

A double az nagyobb pontosságú a float-nál. Amúgy, igen, mind a kettőt lebegőpontos számok tárolására találták ki. A mantissza és a karakterisztika is igaz mindkettőre (persze más-más értékkel).

Ismétlem, csak a pontosságban van közöttük különbség.

2020. szept. 24. 18:16
Hasznos számodra ez a válasz?
 10/12 anonim ***** válasza:

Ha egy hosszú intet akarsz kiírni ami nem fér az int memóriájába nyelvtől függően válassz nagyobb intet(pl uint, long, ulong). Nagyobb floatot semmiképp sem fogsz találni, legalábbis addig nem amíg nem lesz rá valóban szükség - akkor meg majd bekerül a nyelvbe, ahogy ezek is szép lassan jelentek meg, nem egyszerre).


#9 miért lett lepontozva? Van half(precision floating point) single(precision floating point) és double(precision floating point).

A float egyenértékű a single vel minden általam ismert nyelvben, biztos van kivétel, de a ma népszerűbb nyelvekben, legjobb tudomásom szerint, szinonímái egymásnak(nem felcserélhetőek egy nyelven belül, de egyik így, másik úgy hivatkozik rájuk).

A különbség köztük az, hogy mennyi memóriát foglalnak le, és hogy meddig lesznek a számok pontosak, ahogy a kérdező írta - illetve a hardverigényük is más, nem csak a memóriaigényük, double vel számolni lassabb mint single vel. Otthoni felhasználásnál ezt nem fogod észrevenni, de csak akkor érdemes nagyobb igényű típust használni ha használod is, azért nem csak simán double van mert nincs rá mindig szükség, miért lassítanád feleslegesen a kódodat\növelnéd a memória igényt.

Teljesítménykritikus kódnál ha tudsz kisebb pontossággal számolni rengeteg plusz teljesítményt tudsz ezzel nyerni, pl a vega architektúra egyik nagy újdonsága volt hogy támogat half precision számokat is(korábban is kódolhattál ilyet, de a háttérben single precision lett belőle minden asztali gpu n), azt meg azért ne gondoljuk már hogy egy gpu mérnök hülye lenne.

2020. szept. 24. 20:11
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!