A programozási nyelvekben lévő valós szám típus valójában nem csak racionális szám?
Már a kérdésed a válasz egyben.
Valós szám valójában nem racionális szám? Logikailag mondva, nem.
Programozásban lebegőpontos számok vannak. Még nem hallottam a valós szám kifejezést erre.
Szerintem nem vagy tisztában, hogy mi a különbség a valós és a racionális számok között. Valós szám = racionális + irracionális számok halmaza.
"mint pl a Pascal van "real" nevű típus. Ami igazából lebegőpontos értéket tárol."
LoL
"Szóval ti soha nem olvastatok olyan tananyagot, ahol valós számnak hívták a floatot vagy a doublet."
Minden szám a valós (angolul REAL) számok halmazának eleme. Ebbe beletartozik a float, a double vagy az integer is.
A számítógépek azonban úgy vannak megkonstruálva, hogy bizonyos számokkal gyorsabban képesek műveletet végezni, mint másokkal. Ezek általában a CPU szóhosszának (4,8,12,16,32,64 bit) megfelelő integer típusúak.
Ezért van az, hogy egyes programnyelvekben léteznek különféle típusok, egyes nyelvekben (Pl. LUA) pedig ilyenek nincsenek (LUA-ban minden szám valós (number tipusú)), mert az interpreter megalkotója nem tartotta fontosnak azt a sebességbeli veszteséget, amit pl. az int float közötti különbség okoz a velük végzett műveletek során. Script nyelveknél nem a sebesség az elsődleges.
Mivel a gép csak véges módon felírtható számokkal tud dolgozni, a "real" (lebegőpontos) típus racionális számokat tud leírni. Ahogy egyébként papíron sem lehet őket helyiértékes alakban leírni. (Máshogy sem egyszerű.) A gyakorlatban viszont jó közelítéssel racionális számokkal lehet közelíteni bármely irracionális számot.
A végtelen vagy a "NaN" nem számok, nincs értelme számhalmazokba sorolni őket.
"Minden szám a valós (angolul REAL) számok halmazának eleme. Ebbe beletartozik a float, a double vagy az integer is."
Igen, persze. De azért sejthető, hogy amikor azt írtam, hogy valós, nem az egész számokra gondoltam. Persze lehet direkt így értelmezni, amit írtam, biztos jó móka.
Nyilván arra gondoltam, hogy mivel a számítógépeken tudtommal nem tudunk tárolni végtelen nem szakaszos tizedestörteket, azaz irracionális számokat (max csak közelíteni tudjuk őket néhány tizedesjegyig, ami gyakorlatilag teljesen jó), ezért nem precíz, ha egyes tananyagok valós számnak nevezik a floatot vagy doublet.
"A végtelen vagy a "NaN" nem számok, nincs értelme számhalmazokba sorolni őket."
Mondd ezt a diszkrét matek tanároknak ;)
Ja és ez itt micsoda? :D
#include <iostream>
#include <cmath>
int main() {
float a = NAN;
double b = INFINITY;
std::cout << a << " " << b;
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!