Elmagyaráznád miért nem tud konvertálódni implicit vagy explicit az alábbi művelet?
float f = 452.22;
double d = f;
//Ez sem jó:
double d = (double)f;
Miért van az,hogy csak akkor jó ha így inicializálom a floatot: 452.22f;
Ha double ként megadsz egy számot, pl. 452.22-t. Akkor dupla pontos és ez nem alakítható egyszeres pontosságúra külön explicit jelzés nélkül Java-ban! Bakker lehetett volna C, C++ vagy más, könyörgön írjátok ki milyen nyelv.
Így megy:
float f = (float)5.2;
float g = 5.2f;
double f2 = f;
double g2 = g;
Az a baj, hogy ha leírod azt, hogy 452.22, akkor az alapból egy double típusú szám.
Azt vagy explicit módon át kell alakítani float-tá, vagy eleve úgy kell leírnod azt a számot, hogy double helyett float-nak vegye már eredetileg is (f betű a végére).
float f = (float) 452.22;
// Vagy még jobb:
float f = 452.22f;
Szóval az, amit a második ír...
Szinte mindegy milyen nyelv, a legtöbben így van.
"Szinte mindegy milyen nyelv, a legtöbben így van."
C-ben például pont nincs így. C++-ban se. Pythonban a float típus többnyire dupla precizitású, amit máshol double-nek hívnak. Nagyon nem ilyen egyszerű a téma. A Java (és a C#) tiltja az implicit típuskonverziókat ha adatvesztés léphet fel, ez az ő döntésük, de nem a legtöbb nyelv döntése.
# 5 A világon jelenleg kb. a második legtöbbet használt, és egy másik tök nagy nyelvben is így van, igazán ki lehetett volna következtetni, melyik nyelvről beszél.
Aki nem ismeri fel ezt a "problémát", az nem ismeri azt a nyelvet, úgyhogy majdnem teljesen fölösleges lett volna kiírni.
"A világon jelenleg kb. a második legtöbbet használt, és egy másik tök nagy nyelvben is így van, igazán ki lehetett volna következtetni, melyik nyelvről beszél."
Nem, nem lehet kikövetkeztetni, mert olyan nyelv nincs amiben explicit nem lehet castolni. A világban különben sem a hossz, hanem a forma meg a vastagság számít...
"Aki nem ismeri fel ezt a "problémát", az nem ismeri azt a nyelvet, úgyhogy majdnem teljesen fölösleges lett volna kiírni."
Ember én válaszoltam meg a kérdést, és jó lett volna, ha nem C-re gondolok elsőre, és az explicit konverzió pont működik Java-ban meg mindenben, az implicit meg jó float->double irányban. Erre a kérdés azt állítja, hogy nem grat...
Sajnálom ha sikerült kellemetlenséget okoznom azzal,hogy nem jutott eszembe kiírni a prog nyelvet.
Egyébként c# ról volt szó.De nekem a javás válaszok is tökéletesen megfeleltek ebben az esetben.
És ebben az esetben minek számít alapból a literális állandó?
float f= 22345;
float f1 = 4456783947;
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!