Perustason Tyyppimuunnos
Tyyppimuunnos tarkoittaa arvon muuttamista yhdestä tietotyypistä toiseen. Tämä on usein mahdollista sellaisten tyyppien välillä, jotka edustavat lukuja. Esimerkiksi float voidaan muuntaa int:ksi ja päinvastoin. Sen sijaan string-tyypin muuttaminen suoraan int-tyyppiin ei ole loogista eikä mahdollista ilman lisätoimenpiteitä.
Tyyppimuunnoksia on kahta tyyppiä: implisiittinen tyyppimuunnos ja eksplisiittinen tyyppimuunnos.
Implisiittinen tyyppimuunnos tapahtuu automaattisesti, kun arvo muunnetaan yhdestä tyypistä toiseen, yleensä pienemmästä suurempaan tietotyyppiin.
main.cs
1234int val1 = 10; long val2 = val1; // int is automatically converted to long float val3 = var1; // int is automatically converted to float double var4 = var1; // int is automatically converted to double
Implisiittinen tyyppimuunnos tapahtuu automaattisesti, kun pienempi tietotyyppi muunnetaan suurempaan. Tietotyypin koko määräytyy sen mukaan, kuinka paljon dataa se voi sisältää, mitattuna bitteinä. Esimerkiksi int voi sisältää 32 bittiä, kun taas long voi sisältää 64 bittiä, joten int voidaan muuntaa long-tyyppiin automaattisesti. Samoin float voidaan muuntaa double-tyyppiin ilman ongelmia.
Tässä on tietotyyppejä pienimmästä suurimpaan:
char -> int -> long -> float -> double
Eksplisiittinen tyyppimuunnos tarkoittaa, että ohjelmoija määrää tietokoneen muuttamaan arvon toiseen tietotyyppiin. Tämä on tarpeen, kun muunnetaan suuremmasta tietotyypistä pienempään, koska osa tiedoista saattaa hävitä. Esimerkiksi, kun float-arvo 3.14 muunnetaan kokonaisluvuksi, tuloksena on 3 ja desimaaliosa katoaa. Siksi tällaiset muunnokset täytyy tehdä nimenomaisesti.
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { float val1 = 3.14f; int val2 = val1; // Error: Cannot implicitly convert type 'float' to 'int'. An explicit conversion exists (are you missing a cast?) Console.WriteLine(val1); Console.WriteLine(val2); } } }
Virheen korjaamiseksi yllä olevassa koodissa meidän täytyy suorittaa eksplisiittinen tyyppimuunnos muuttujalle val1 kokonaislukuarvoksi.
Tyyppimuunnoksen syntaksi on (datatype) value, esimerkiksi (int) 3.1415. Tässä tapauksessa kirjoitamme siis (int) val1:
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { float val1 = 3.14f; int val2 = (int) val1; Console.WriteLine(val1); Console.WriteLine(val2); } } }
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Mahtavaa!
Completion arvosana parantunut arvoon 1.67
Perustason Tyyppimuunnos
Pyyhkäise näyttääksesi valikon
Tyyppimuunnos tarkoittaa arvon muuttamista yhdestä tietotyypistä toiseen. Tämä on usein mahdollista sellaisten tyyppien välillä, jotka edustavat lukuja. Esimerkiksi float voidaan muuntaa int:ksi ja päinvastoin. Sen sijaan string-tyypin muuttaminen suoraan int-tyyppiin ei ole loogista eikä mahdollista ilman lisätoimenpiteitä.
Tyyppimuunnoksia on kahta tyyppiä: implisiittinen tyyppimuunnos ja eksplisiittinen tyyppimuunnos.
Implisiittinen tyyppimuunnos tapahtuu automaattisesti, kun arvo muunnetaan yhdestä tyypistä toiseen, yleensä pienemmästä suurempaan tietotyyppiin.
main.cs
1234int val1 = 10; long val2 = val1; // int is automatically converted to long float val3 = var1; // int is automatically converted to float double var4 = var1; // int is automatically converted to double
Implisiittinen tyyppimuunnos tapahtuu automaattisesti, kun pienempi tietotyyppi muunnetaan suurempaan. Tietotyypin koko määräytyy sen mukaan, kuinka paljon dataa se voi sisältää, mitattuna bitteinä. Esimerkiksi int voi sisältää 32 bittiä, kun taas long voi sisältää 64 bittiä, joten int voidaan muuntaa long-tyyppiin automaattisesti. Samoin float voidaan muuntaa double-tyyppiin ilman ongelmia.
Tässä on tietotyyppejä pienimmästä suurimpaan:
char -> int -> long -> float -> double
Eksplisiittinen tyyppimuunnos tarkoittaa, että ohjelmoija määrää tietokoneen muuttamaan arvon toiseen tietotyyppiin. Tämä on tarpeen, kun muunnetaan suuremmasta tietotyypistä pienempään, koska osa tiedoista saattaa hävitä. Esimerkiksi, kun float-arvo 3.14 muunnetaan kokonaisluvuksi, tuloksena on 3 ja desimaaliosa katoaa. Siksi tällaiset muunnokset täytyy tehdä nimenomaisesti.
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { float val1 = 3.14f; int val2 = val1; // Error: Cannot implicitly convert type 'float' to 'int'. An explicit conversion exists (are you missing a cast?) Console.WriteLine(val1); Console.WriteLine(val2); } } }
Virheen korjaamiseksi yllä olevassa koodissa meidän täytyy suorittaa eksplisiittinen tyyppimuunnos muuttujalle val1 kokonaislukuarvoksi.
Tyyppimuunnoksen syntaksi on (datatype) value, esimerkiksi (int) 3.1415. Tässä tapauksessa kirjoitamme siis (int) val1:
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { float val1 = 3.14f; int val2 = (int) val1; Console.WriteLine(val1); Console.WriteLine(val2); } } }
Kiitos palautteestasi!